죽은 프로세스 - 항상 자식 프로세스인가요?

죽은 프로세스 - 항상 자식 프로세스인가요?

죽은 프로세스가 무엇인지 읽는 것은 그것이 하위 프로세스이고 종료/종료될 때 해당 상위 프로세스가 제대로 처리/종료되지 않음을 나타냅니다.

하지만 아래 출력을 보세요.

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을 제외한 모든 프로세스에는 상위 프로세스가 있습니다.

관련 정보