阅读什么是已失效的进程表明它是一个子进程,当它终止/结束时,其父进程没有正确处理/杀死。
但查看下面的输出
servera> ps -ef | grep defun
cyberark 4036 1 0 - ? 0:00 <defunct>
oracle 4562 4539 0 09:29:17 pts/3 0:00 grep defun
servera> ptree 4036
4036 <defunct>
4043 -sh
4051 passwd root
似乎已失效的进程 4036 是 ptree 中的父进程?
答案1
失效(僵尸)进程是已终止的进程,但其父进程尚未对其执行 wait*()。如果父进程在子进程之前终止,则子进程将重新设置为 init (pid 1),并且 init 在其终止时对其执行 wait*()。因此,每个已失效的进程很可能都是某个非 init 进程的子进程。
答案2
PID 4036不是进程树的根;那是 PID 1。您要求的是子树根号为 4036,所以您当然看不到它的父级。但它有一个。除 PID 1 外,每个进程都有一个父进程。