私はプログラムにユーザースペースとカーネルスペースという2つの「レベル」があることを知っています。
私の質問は:カーネルプログラムだけを見たいか、カーネルスペースにあるプログラムだけを見たいのです。
これは正しいアプローチですか?
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]
....
ベストアンサー1
カーネルプロセス(または「カーネルスレッド」)はkthreadd
PID 2()の子プロセスであるため、これはより正確になります。
ps --ppid 2 -p 2 -o uname,pid,ppid,cmd,cls
--deselect
選択を反転し、ユーザースペースプロセスのみを表示するために追加されました。
(この質問はほぼ同じです。これ.)
2.4.* 以前のカーネルには、この PID 2 ルールはまだ存在しません。