답변:
세상에! 아니, 아니. kill -9를 사용하지 마십시오.
프로세스가 깨끗하게 할 수있는 기회를주지 않습니다.
소켓 연결 종료
임시 파일 정리
아이들에게 사라지고 있다고 알리다
터미널 특성 등을 재설정하십시오.
일반적으로 15를 보내고 1 초 또는 2 초 정도 기다립니다. 그래도 문제가 해결되지 않으면 2를 보내십시오. 그래도 문제가 해결되지 않으면 1을 보내십시오. 그래도 문제가 해결되지 않으면 프로그램이 제대로 작동하지 않으므로 BINARY를 제거하십시오!
kill -9를 사용하지 마십시오. 화분을 정리하기 위해 콤바인 수확기를 꺼내지 마십시오.
좀비 프로세스 (실제로 <defunct>
)는 실제로 프로세스가 아닙니다. 프로세스 테이블의 항목이므로 상위 프로세스는 wait()
syscall 을 수행 할 수 있습니다 .
걱정하지 않아도됩니다. 그들은 어떤 자원도 차지하지 않으며 wait()
, 부모 자신이 죽을 때 부모가 전화 할 때 사라집니다 .
좀비 프로세스에는 프로세스 트리의 항목 이외의 다른 리소스가 할당되어 있지 않습니다. 이것은 프로세스가 완료 될 때 발생하지만 부모 프로세스는 아직 그 프로세스를 거두지 못했습니다 (예 : wait
에드).
원하는 경우 부모에게 SIGCHLD ( kill -20
) 를 보내 부모에게 강제로이를 시도 할 수 있지만 부모가이를 존중한다는 보장은 없습니다.
당신은 종종 짧은 시간 동안 그것들을 보게 될 것입니다 (예를 들어 top을 사용하여 프로세스 트리를 보는 동안)-이것은 정상입니다; 하위 프로세스가 완료된 시간과 상위 프로세스가이를 폴링하는 시간 간격에서 하위 프로세스는 좀비로 표시됩니다.
그러나 지속적으로 존재하는 좀비 프로세스 (정상적인 것은 아님)를 보면 죽은 프로세스에 할당 된 리소스가 없기 때문에 다시 걱정할 필요가 없습니다. 이는 일반적으로 애플리케이션이 크 래피 개발자에 의해 잘못 작성되었음을 의미합니다.
좀비 프로세스에 관심을 가져야 할 유일한 시간은 예를 들어 위에서 언급 한 동일한 크 래피 애플리케이션이로드되는 경우와 같이 많은 프로세스를 볼 때뿐입니다.
우리는 내가 일하는 곳에서 엉뚱한 개발자가 많으므로 그러한 문제를 처리하고 그렇게하는 동안 모든 종류의 쓸모없는 것을 배우는 특권이 있습니다. 사실, 우리 팀은 종종 인터뷰에서 크 래피 개발자가 작성한 크 래피 쉘 스크립트를 사용합니다. 후보자가 스크립트가 실제로 고르지 않다고 고르고 왜 크 래피인지 알려면 문을 잘 들어야합니다.
가상 샷건은 ...
$ 촬영 <pid>
#! / bin / sh 희생자 =`ps -e -o pid, ppid | egrep "^ \ s * $ 1 \ b"| awk '{print $ 2}'` 희생자 \ _name =`ps -e -o pid, cmd | egrep "^ \ s * $ {victim} \ b"| 헤드 -n 1 | awk '{print $ 2}'` #kill $ {victim} echo "Killed $ {victim_name}."
그리고 기억하십시오 : 항상 머리에 쏴.