为什么有些Linux进程不能使用pstree打印?

问题描述 投票:0回答:1

我正在完成一个作业,是关于在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
进程

linux process operating-system
1个回答
0
投票
所有内核线程都是 kthreadd (pid 2) 的后代,它是在引导期间由内核 (pid 0) 生成的。 kthreadd 枚举其他内核线程;它提供了接口例程,通过这些例程,内核服务可以在运行时动态生成其他内核线程。可以使用 ps -ef 命令从命令行查看内核线程——它们显示在[方括号]中:

内核线程

由于 PID 2 不是 PID 1 的后代,因此它不在 pstree 的显示中。

© www.soinside.com 2019 - 2024. All rights reserved.