已失效的进程 - 它总是一个子进程吗?

已失效的进程 - 它总是一个子进程吗?

阅读什么是已失效的进程表明它是一个子进程,当它终止/结束时,其父进程没有正确处理/杀死。

但查看下面的输出

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 外,每个进程都有一个父进程。

相关内容