我正在完成一个作业,是关于在Linux上实现一个
pstree
命令,我的基本想法是遍历/proc
目录中的文件,并查看/proc/pid/status
和/proc/pid/task
之间的关系进程,但是,当我遍历文件时,我注意到某些进程在 pstree
命令之后没有显示在 shell 上,我不知道如何解决这个问题
例如:
/proc/2/status
是:
Name: kthreadd
Umask: 0000
State: S (sleeping)
Tgid: 2
Ngid: 0
Pid: 2
PPid: 0
....
但是我使用命令
pstree -p|grep kthreadd
,pstree
命令找不到kthreadd
进程
所有内核线程都是 kthreadd (pid 2) 的后代,它是在引导期间由内核 (pid 0) 生成的。 kthreadd 枚举其他内核线程;它提供了接口例程,通过这些例程,内核服务可以在运行时动态生成其他内核线程。可以使用 ps -ef 命令从命令行查看内核线程——它们显示在[方括号]中:
由于 PID 2 不是 PID 1 的后代,因此它不在 pstree 的显示中。