我试图检查谷歌,但我找不到有关实际问题的许多信息。
如何获得僵尸进程和守护进程的综合列表? 我如何在不同的操作系统上执行此操作。 Linux呢? AIX? 视窗?
我相信,基于PID,我们不能确定过程的types。 通过terminal运行也可能没有帮助。
试试这个。
ps axo pid,ppid,pgrp,tty,tpgid,sess,comm |awk '$2==1' |awk '$1==$3'
在上面的命令中,我使用了守护进程的属性来从Linux中所有现有的进程中过滤掉它们。
守护进程的父节点始终是Init,因此检查ppid 1.守护进程通常不与任何终端关联,因此我们有'?' 在tty下。 守护进程的process-id和process-group-id通常是相同的守护进程的session-id与进程id相同。
在Linux上使用GNU ps:
[
$ ps --version procps-ng version 3.3.3
]
植物大战僵尸:
ps -lA | grep '^. Z'
会让你所有的僵尸(注意参数是小写'L',即'l'后面跟着'A')。
守护进程:
正如@Barmar所说,没有办法确定守护进程,但是一个进程是守护进程的线索是,它不与任何TTY设备相关联。 “ps -Al”输出的第12列是TTY; 第四个是PID,第十四个是进程名。 因此:
ps -lA | awk '$12 == "?" {print $4, $14}'
会得到可能是守护进程的进程; 不保证! 🙂
守护进程由init进程启动,这意味着它们的PPID为1。
因此:
ps -ef | awk '$3 == 1'
要获得僵尸和守护进程的列表,只需编写一个psudo字符开发驱动程序,在那里你应该导航槽task_struct和寻找状态