![pidof에 대한 대안이 있습니까? (더 작은 설치 공간)](https://linux55.com/image/58088/pidof%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%8C%80%EC%95%88%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20(%EB%8D%94%20%EC%9E%91%EC%9D%80%20%EC%84%A4%EC%B9%98%20%EA%B3%B5%EA%B0%84).png)
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
pidof
30% 상승이 이상하다는 점에는 동의합니다. 하지만 이것이 단지 일시적인 급증이라면 나쁜 것일까요?
또는 .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