Linux:是否只能看到内核空间线程/进程?


27

我知道程序有两个“级别”:用户空间和内核空间。

我的问题是:我只想查看内核程序,或者更好:内核空间上的程序。

这种方法正确吗?

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]
....

5
>可以看到内核空间程序吗?是的 您只需要在CCD上安装正确的天文滤镜即可; ;-)
RubberStamp'Dec


5
@steve内核空间程序确实严格地与模块相切。并非所有模块都有进程,也不是所有进程都是模块。
克里斯·

3
问题是错误的:您想查看内核进程(或内核线程或内核任务)而不是内核程序。...仅涉及一个程序内核(内核模块已添加到内核​​中)。
巴西尔·斯塔林凯维奇

我现在要纠正
elbarna

Answers:


42

内核进程(或“内核线程”)是PID 2(kthreadd)的,因此这可能更准确:

ps --ppid 2 -p 2 -o uname,pid,ppid,cmd,cls

添加--deselect以反转选择并仅查看用户空间进程。

(这个问题几乎与 。)

在2.4。*和更低版本的内核中,此PID 2约定尚不存在。


总是这样吗?请参阅此问题的第四条评论:stackoverflow.com/q/12213445/1971003
Guy Avraham

在早期的2.6。*内核中,可能无法完全完成对“ PID 2的子代”约定的转换。正如HighKing指出的那样,PID 2的名称也没有完全稳定到kthreadd2.6.18。如果您对确切的细节感兴趣,请转至kernel.org并使用git浏览器界面来深入了解kernel/kthread.c文件的早期历史。
telcoM


1

如果已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
[..]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.