pidof에 대한 대안이 있습니까? (더 작은 설치 공간)

pidof에 대한 대안이 있습니까? (더 작은 설치 공간)

pidof글쎄요, 저는 in이 널리 사용되면서 방금 발견했습니다.간격이 매우 짧습니다., 겉보기에 작은 도구도 훌륭한 도구가 될 수 있습니다CPU 사용량. (출처 top: )
내 기존 컴퓨터에서는 비록 짧은 시간이기는 하지만 특히 일괄 사용 시 쉽게 30%로 정점에 도달할 수 있었지만 프로세스의 PID를 찾는 것과 같은 간단한 작업의 경우 이와 같은 도구가 필요할 것이라고 생각합니다. 유용합니다. 점유된 공간은 해당 공간의 1/5이어야 합니다 pidof.

그렇기 때문에 내장된 표준 도구를 사용하여 프로세스 ID 조회를 "구축"하는 것이 더 현명한지 궁금합니다. 만약에그리고전체 파이프라인 실행으로 인한 CPU 로드가 일정하게 유지됩니다.다음과 같은독립운전으로 인한 부하 pidof.

또한, 알아두면 흥미로울 것입니다.무엇이러한 피크가 발생했습니다. 어쩌면 여러분 중 누군가가 pidof코드를 더 깊이 파고들었나요? :)

답변1

다음은 "apache2"라는 프로세스의 pid를 찾는 몇 가지 예입니다. 그들 사이에는 약간의 차이가 있지만(출력의 개행) pidof파이프 등에서는 동일하게 작동해야 합니다.

사용 pidof:

$ pidof apache2
31751 31750 31749 31748 31747 31489 31488 31487 31486 31485 1500

개행 구분:

$ ps aux | grep apache2 | grep -v grep | awk -n '{print $2}'
1500 
31485 
31486 
31487 
31488 
31489 
31747 
31748 
31749 
31750 
31751 

공백으로 구분됨:

$ ps aux | grep apache2 | grep -v grep | awk -n '{printf $2" "}'
1500 31485 31486 31487 31488 31489 31747 31748 31749 31750 31751 

위의 명령에 대해 어리석은 타이밍을 적용했습니다.

$ date +%T:%N; pidof apache2 ;  date +%T:%N
17:06:05:627088798
31751 31750 31749 31748 31747 31489 31488 31487 31486 31485 1500
17:06:05:634500908

$ date +%T:%N; ps aux | grep apache2 | grep -v grep | awk -n '{printf $2" "}' ;  date +%T:%N
17:06:29:887314682
1500 31485 31486 31487 31488 31489 31747 31748 31749 31750 31751
17:06:29:903997288

pidof: 7,412,110나노초

첨부 파일: |쿼리: 16,682,606나노초

내 컴퓨터에서는 pidof예상대로 더 빠르게 로드됩니다.

의 출력은 pidof역순으로 정렬된 것으로 보이므로 이것이 내가 선호하는 대체 주문이 될 것입니다.

$ ps aux | grep apache2 | grep -v grep | awk -n '{print $2}' | sort -rn
31751
31750
31749
31748
31747
31489
31488
31487
31486
31485
1500

답변2

pidof30% 상승이 이상하다는 점에는 동의합니다. 하지만 이것이 단지 일시적인 급증이라면 나쁜 것일까요?

또는 .example을 사용할 수 있습니다 ps(1).

$ ps ax | grep firefox
8621 ??  S       5:20.24 firefox
10409 p3  R+      0:00.00 grep firefox

답변3

프로세스(pgrep, pkill 등)를 관리하는 명령 세트가 있으므로 가장 좋은 방법은 다음과 같습니다(macOSX의 경우).

$ ps -ef | pgrep login
102
103
6245
6361

...또는 역순으로:

$ ps -ef | pgrep login | sort -rn
6361
6245
103
102

...또는 마지막 것:

$ ps -ef | pgrep login | sort -rn | head -n 1
6361

관련 정보