我想知道如何区分我正在构建的进程扫描器的内核线程和用户线程。我很难找到这两种类型的良好定义。
我发现内核线程没有自己的内存,因此 /proc/$pid/status 中没有 Vm* 值,并且 /proc/$pid/exe 上的统计信息不返回任何内容。
因此,我认为如果进程没有 Vm* 值且没有 inode 编号,我可以识别内核线程。我想错了......我的脚本有时会看到被识别为内核进程的 php-cgi 进程。
如果发现这些错误识别的进程中的大多数都是僵尸,一秒钟后就消失了。所以我实施了一个简单的检查来查看状态是否为“Z”。如果是这样,请忽略它。这为我节省了很多误报,但我仍然收到有关 php-cgi 内核进程的消息。
谁能告诉我如何以正确的方式区分内核线程和用户线程?