죽은 프로세스가 무엇인지 읽는 것은 그것이 하위 프로세스이고 종료/종료될 때 해당 상위 프로세스가 제대로 처리/종료되지 않음을 나타냅니다.
하지만 아래 출력을 보세요.
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을 제외한 모든 프로세스에는 상위 프로세스가 있습니다.