프로세스 목록에서 Apache2가 죽은 것으로 표시되는 이유는 무엇입니까?

프로세스 목록에서 Apache2가 죽은 것으로 표시되는 이유는 무엇입니까?

실행하면 top보기에 좋지 않은 줄이 표시됩니다.

 2475 www-data  20   0     0    0    0 Z    1  0.0   0:00.19 apache2 <defunct> 

왜 이 과정이 진행 <defunct>되고 어떻게 해야 합니까?

답변1

무해합니다. 무시해도 됩니다. 이것은 좀비 프로세스입니다. 매뉴얼 페이지 ps에는

Z    Defunct ("zombie") process, terminated but not reaped by its parent.

Wikipedia 페이지도 참조하세요.좀비 프로세스.

정말로 제거하고 싶다면 apache2를 다시 시작하면 됩니다. 기계를 다시 시작하면 확실히 문제가 해결되지만 꼭 필요한 것은 아닙니다.

이 문제도 비슷합니다. -상위 프로세스가 init인 <defunct> 프로세스를 종료하는 방법은 무엇입니까?

답변2

실패한 프로세스는 좀비 프로세스입니다. Kill 명령은 좀비 프로세스에 영향을 주지 않습니다. 이는 상위 프로세스를 종료하여 종료할 수 있습니다. PPID 값에서 상위 항목을 찾을 수 있습니다. PPID가 1(init)인 경우, 즉 init상위 프로세스가 더 이상 존재하지 않기 때문에 프로세스가 조정된 경우 다시 시작하는 것이 유일한 해결 방법입니다.

답변3

SIGCHLD부모 프로세스를 종료하는 대신 부모 프로세스에 신호를 보낼 수 있습니다 . 상위 프로세스가 이 신호에 등록하고 wait시스템 호출을 호출하면 존재하지 않는 프로세스가 삭제됩니다.

관련 정보