Linux:如何查找守护程序进程和僵尸进程列表

kri*_*456 16 unix linux aix admin linux-kernel

我试过检查谷歌,但我找不到与实际问题相关的太多信息.

如何获得僵尸进程和守护程序进程的整合列表?我如何在不同的操作系统上执行此操作.Linux呢?AIX?视窗?

我确信,基于PID,我们无法确定过程的类型.通过终端运行可能也无济于事.

小智 16

试试这个.

ps axo pid,ppid,pgrp,tty,tpgid,sess,comm |awk '$2==1' |awk '$1==$3'
Run Code Online (Sandbox Code Playgroud)

在上面的命令中,我使用了一个守护进程的属性来从Linux中的所有现有进程中过滤掉它们.

守护进程的父进程始终是Init,所以检查ppid 1.守护进程通常不与任何终端关联,因此我们有'?' 在tty.守护进程的process-id和process-group-id通常相同.守护进程的session-id与进程id相同.


kai*_*wan 10

使用Linux上的GNU ps:

[

$ ps --version

procps-ng version 3.3.3
Run Code Online (Sandbox Code Playgroud)

]

植物大战僵尸:

ps -lA | grep '^. Z'
Run Code Online (Sandbox Code Playgroud)

会得到你所有的僵尸(请注意,param是小写'L',即'l'后跟'A').

守护进程:

正如@Barmar所说,没有办法确定守护进程,但是一个进程是守护进程的线索是它与任何TTY设备都没有关联.'ps -Al'输出的第12列是TTY; 第四个是PID,第四个是进程名称.因此:

ps -lA | awk '$12 == "?" {print $4, $14}'
Run Code Online (Sandbox Code Playgroud)

将为您提供可能是守护进程的进程; 不保证!:)


小智 1

要获取 Zombie 和守护进程的列表,只需编写一个伪字符开发驱动程序,您应该在其中导航 task_struct 并查找状态