ps Linux에서 커널이 아닌 프로세스만 표시할 수 있습니까?

ps Linux에서 커널이 아닌 프로세스만 표시할 수 있습니까?

ps커널 스레드가 아닌 사용자 프로세스만 표시 하도록 요청하려면 어떻게 해야 합니까 ?

바라보다이 문제무슨 말인지 이해해...

답변1

이 작업은 다음과 같이 수행해야 합니다(Linux에서).

ps --ppid 2 -p 2 --deselect

kthreadd(PID 2) PPID 0(리눅스 2.6+) psPPID 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 모드에서도 작동합니다.

관련 정보