我试图检查谷歌,但我找不到有关实际问题的很多信息。Linux:如何找到守护进程和僵尸进程列表
如何获取僵尸进程和守护进程的综合列表? 如何在不同的操作系统上执行此操作。 Linux呢? AIX?视窗?
我确定,基于PID,我们不能识别过程的类型。通过终端运行可能也无济于事。
我试图检查谷歌,但我找不到有关实际问题的很多信息。Linux:如何找到守护进程和僵尸进程列表
如何获取僵尸进程和守护进程的综合列表? 如何在不同的操作系统上执行此操作。 Linux呢? AIX?视窗?
我确定,基于PID,我们不能识别过程的类型。通过终端运行可能也无济于事。
要获得僵尸和守护进程的列表中只写了psudo字符开发的驱动程序,你应该定位槽task_struct中,寻找状态
确实如此,但是:(a)更多的努力(b)您仍然不知道哪个守护进程肯定是 – kaiwan
请您在“写一个伪字符开发驱动程序”上大声疾呼?另外,通过在task_struct中导航,是否可以精确识别守护进程。意思,当然。没有不匹配。 – kris123456
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进程启动,这意味着他们有1
因此一个PPID:
ps -ef | awk '$3 == 1'
但是这会输出那些不是守护进程的进程。因为,如果父进程在子进程之前死亡,那么该子进程将由init()进行父进程。 –
试试这个。
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相同。
没有办法识别守护进程,但僵尸在'ps'的状态栏有'Z'。 – Barmar