![ps Linux에서 커널이 아닌 프로세스만 표시할 수 있습니까?](https://linux55.com/image/33226/ps%20Linux%EC%97%90%EC%84%9C%20%EC%BB%A4%EB%84%90%EC%9D%B4%20%EC%95%84%EB%8B%8C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A7%8C%20%ED%91%9C%EC%8B%9C%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
ps
커널 스레드가 아닌 사용자 프로세스만 표시 하도록 요청하려면 어떻게 해야 합니까 ?
바라보다이 문제무슨 말인지 이해해...
답변1
이 작업은 다음과 같이 수행해야 합니다(Linux에서).
ps --ppid 2 -p 2 --deselect
kthreadd
(PID 2) PPID 0(리눅스 2.6+) ps
PPID 0에 대한 필터링을 허용하지 않으므로 이 해결 방법이 있습니다.
이것도 보세요동등한 답변.
답변2
실제로 나는 다음 관용구로 충분하다는 것을 알았습니다.
ps auxf | grep -v ]$
괄호로 끝나는 줄을 필터링합니다.가능한결과적으로 원치 않는 항목이 생략되지만 그럴 가능성은 거의 없습니다. 대신 기억하기 쉽고 상대적으로 빠르게 입력할 수 있습니다.
일부 프로세스(예: avahi-daemon)에는 괄호 안에 프로세스 이름 정보(avahi-daemon의 경우 호스트 이름)가 있으며 이 명령으로 필터링됩니다.
답변3
커널 프로세스를 식별하는 한 가지 방법은 사용자 메모리를 사용하지 않으므로 vsz 필드가 0입니다. 이것은 또한 좀비 프로세스를 잡을 수도 있습니다(감사합니다스티븐 차제라스이 관찰의 경우) 상태에 따라 제거될 수 있습니다.
ps axl | awk '$7 != 0 && $10 !~ "Z"'
PID만 나열:
ps -e -o pid= -o state= -o vsize= | awk '$2 != "Z" && $3 != 0 {print $1}'
답변4
이 질문은 약간 오래되었지만 흥미로운 새로운 접근 방식이 있습니다. 버전 4부터프로세스패키지에서 환경변수를 설정할 수 있습니다 LIBPROC_HIDE_KERNEL
. 설정된 경우,참고(1)그리고탑(1)사용자 공간 프로세스만 표시됩니다.
매뉴얼에서 발췌:
LIBPROC_HIDE_KERNEL
일반적으로 -e 옵션으로 표시되는 커널 스레드를 숨기려면 이 값을 임의의 값으로 설정하십시오. 이는 --ppid 2 -p 2 --deselect 를 선택하는 것과 같습니다. BSD 모드에서도 작동합니다.