사용자 공간과 커널 공간이라는 두 가지 수준의 프로그램이 있다는 것을 알고 있습니다.
내 질문은 : 커널 프로그램 또는 더 나은 것을보고 싶습니다 : 커널 공간의 프로그램.
이 방법이 맞습니까?
ps -ef|grep "\["
root 1 0 0 20:23 ? 00:00:00 init [4]
root 2 0 0 20:23 ? 00:00:00 [kthreadd]
root 3 2 0 20:23 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 20:23 ? 00:00:00 [kworker/0:0H]
root 7 2 0 20:23 ? 00:00:06 [rcu_sched]
root 8 2 0 20:23 ? 00:00:00 [rcu_bh]
root 9 2 0 20:23 ? 00:00:00 [migration/0]
root 10 2 0 20:23 ? 00:00:00 [migration/1]
root 11 2 0 20:23 ? 00:00:00 [ksoftirqd/1]
root 13 2 0 20:23 ? 00:00:00 [kworker/1:0H]
root 14 2 0 20:23 ? 00:00:00 [migration/2]
....
답변
커널 프로세스 (또는 “커널 스레드”)는 PID 2 ( kthreadd
)의 자식 이므로 더 정확할 수 있습니다.
ps --ppid 2 -p 2 -o uname,pid,ppid,cmd,cls
--deselect
선택을 반전시키고 사용자 공간 프로세스 만 보려면 추가 하십시오.
(이 질문은 거의 정확한 역이었다 이것 .)
2.4. * 이전 커널에서는이 PID 2 규칙이 아직 존재하지 않았습니다.
답변
커널 스레드는 RAM을 전혀 사용하지 않습니다 (또는 적어도 아무것도 사용하지 않는 것으로 표시됨).
ps -eo cmd,vsize,rss | grep -E ' 0 +0$'
답변
tuna
설치 한 경우 다음 과 같이 모든 커널 스레드를 나열 할 수 있습니다.
$ tuna -U -P
thread ctxt_switches
pid SCHED_ rtpri affinity voluntary nonvoluntary cmd
2 OTHER 0 0xff 290 1 kthreadd
3 OTHER 0 0xff 2 0 rcu_gp
4 OTHER 0 0xff 2 0 rcu_par_gp
6 OTHER 0 0 13 0 kworker/0:0H-kblockd
9 OTHER 0 0xff 2 0 mm_percpu_wq
10 OTHER 0 0 448 0 ksoftirqd/0
[..]