死んだプロセス - 常に子プロセスですか?

死んだプロセス - 常に子プロセスですか?

死んだプロセスが何であるかを読むことは、それが子プロセスであり、終了/終了すると、その親プロセスが正しく処理/終了しないことを示します。

しかし、以下の出力を見てください。

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 *()を実行します。したがって、各デッドプロセスは初期化されていないプロセスのサブプロセスである可能性が高いです。

答え2

PID 4036は、PID 1のプロセスツリーのルートではありません。リクエストされた内容はサブツリールートは4036なので、当然その親を見ることはできません。しかし、一つがあります。 PID 1 を除くすべてのプロセスには親プロセスがあります。

関連情報