좀비 프로세스

항목 읽기 엘라 브 시스템이 느려서 누군가가 도움을 요청한 포럼에서 일부 솔루션이 프로세스에 초점을 맞춘 것을 기억했습니다.

Linux에서 프로세스의 주요 상태는 다음과 같습니다.
수면 (S) : 자신의 차례가 실행되기를 기다리고있는 프로세스.
달리기 (R) : 실행중인 프로세스입니다.
대기 중 (D) : 진입 / 종료 작업이 완료되기를 기다리는 프로세스입니다.
좀비 (Z) : 종료되었지만 프로세스 테이블에 계속 표시되는 프로세스입니다. 프로그래밍 오류로 인해 발생할 수 있으며 느리거나 문제를 일으키는 시스템의 증상 일 수 있습니다.

Zombie 프로세스는 자신을 생성 한 부모 프로세스로부터 신호를 수신하지 않은 프로세스이고, 자식 프로세스는 생성 된 자식 프로세스에 신호를 보내는 부모 프로세스라고하는 상위 프로세스에서 시작된 프로세스입니다. 수명이 끝났음을 나타냅니다.

프로그래밍 오류로 인해 발생할 수 있으며 느리거나 문제를 일으키는 시스템의 증상 일 수 있습니다. 이 상황은 일반적으로 개발자가 일부 구성을 고려하지 않았기 때문에 발생합니다.

Wikipedia에서 다음을 수행 할 수 있습니다. Lees meer 이러한 프로세스에 대해.

top 명령을 실행하면 시스템에서 실행중인 프로세스를 실시간으로 볼 수 있으며 좀비 상태에 있는지 여부를 표시하지만 어떤 것인지 표시하지는 않습니다.

과정

모든 프로세스를 보려면 터미널에 입력하십시오. ps aux, 그리고 좀비 만보기 : ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

프로세스를 나열 할 때 Z 상태로 표시되면 좀비라는 뜻입니다. 즉, 응용 프로그램이 잘 해결되지 않았거나 버그가 있음을 의미하며, 터미널에서 유사한 명령을 실행하여 PID를 제거 할 수 있음을 알 수 있습니다. 이 예에서 : 

alf @ Alf ~ $ kill -9 1945

좀비 프로세스가 많거나 적어도 하나 이상있을 때, 그들을 죽이는 다음 명령을 사용할 수 있습니다. 좀비 프로세스없이 실행하면 아무 일도 일어나지 않습니다.

alf @ Alf ~ $ sudo kill -HUP`ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'| awk '{print $ 2}' ''

안부


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   적절한

    🙁

  2.   오스카

    감사합니다. 아주 좋은 공헌을하셨습니다. 주기적으로 확인하는 명령을 저장하겠습니다.

  3.   조롱

    고마워, 좋은 기사.

  4.   MSX

    귀하의 기사에 대한 몇 가지 설명 :

    "좀비 프로세스"라는 용어는 기술적으로 부적절하며 GNU / 리눅스에 약간의 경험이있는 우리는 자체적으로 실행되는 프로세스가 없지만 시스템에 더 이상 존재하지 않는 프로세스에 대한 참조 일 뿐이므로 사용을 피해야합니다. 그리고 그는 그의 식별자를 공개하지 않았습니다.

    "좀비 프로세스"는 실제로 프로세스 식별자 (프로세스 설명자)의 매핑 테이블에있는 항목이므로 시스템이 프로세스 테이블을 추적하는 데 사용하는 몇 바이트 이상의 메모리를 초과하는 리소스를 소비하지 않습니다.

    고스트 (또는 좀비) 레지스트리 디스크립터에있을 수있는 유일한 문제는 이러한 레지스트리 디스크립터가 너무 빨리 생성되면 이론적으로 전체 프로세스 디스크립터 할당 테이블을 차지할 수 있으므로 시스템에 새 레코드를위한 공간이 없어서 새로 실행하는 것이 불가능하다는 것입니다. 프로세스를 기록하는 프로그램은 결국 기계를 중단합니다.

    그러나 32 비트 시스템에서는 프로세스를 등록 할 수있는 32767 개의 공간 (드물게 또는 전혀 사용되지 않음)이 있고 64 비트 시스템에서는 두 배가되기 때문에 이것은 거의 불가능합니다.

    죽은 프로세스가 심하게 제거 된 상태에서 시스템 중단을 만드는 유일한 방법은 프로세스 설명자를 적절하게 정리하지 않고 프로세스를 생성하고 신속하게 종료하는 것입니다 (즉, "좀비 프로세스"생성).하지만 누군가가 시스템에는 그것보다 훨씬 더 직접적인 방법이 있습니다. 시스템을 방해하고 중단시키는 기하 급수적 인 방식으로 새로운 프로세스를 빠르게 생성하기 시작합니다. 포크 폭탄으로이를 달성하는 방법 중 하나 :

    : () {: | : &}; :

    /etc/security/limits.conf를 올바르게 구성하여 시스템이 포크 폭탄에 상대적으로 저항하도록 만들 수 있지만, 새 프로세스 생성 가능성을 제한할수록 더 적은 수의 애플리케이션을 실행할 수 있다는 점을 고려해야합니다. 그러나 시스템을 매우 세밀하게 제어하려는 모든 편집증적인 시스템 관리자에게 유효한 도구입니다!

    이 문서에는 잘못된 프로세스 설명자에 대한 좋은 정보가 있습니다.
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    그리고 이것에는 포크 폭탄이 어떻게 작동하는지에 대한 명확한 설명이 있습니다. http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    조탈레

      msx :« "좀비 프로세스"라는 용어는 기술적으로 부적절하며 GNU / 리눅스에 대해 약간의 경험이있는 사람들은 사용을 피해야합니다…»하하하. 당신의 자존심보다 더 큰 것은 당신의 나쁜 취향입니다. 이봐 요, 강의를하고 싶거나, 교수진에서 하나를 구하거나, 자신의 블로그를 올려서 원하는 것을 쓰려고한다면, 당신이 한 짓은 맛이 좋지 않습니다.하지만 아파트를 좋은 것으로 수정하기 위해 여기에 오는 것은 정말 나쁜 취향입니다. .

      1.    페르난도 로하스

        진실은 나에게 꽤 흥미로운 말처럼 보였다. 게시물보다 훨씬 더

  5.   플라토 노프

    매우 흥미로워 서 감사합니다.

  6.   썩은 87

    훌륭한 기사 감사합니다

  7.   ALF

    MSX
    « "좀비 프로세스"라는 용어는 기술적으로 부적절하며 GNU / 리눅스에 약간의 경험이있는 우리는 사용을 피해야합니다.»

    보시다시피 좀비라는 용어도 사용되기 때문에 개발자에게 알려야합니다. 콘솔에서 읽었습니다.

    안부

  8.   시툭스

    축하합니다, 아주 좋은 기사입니다. 저는 항상 그들이 PZ라는 의심이 있었지만 조사 할 시간이 없었습니다. 이제 페이지로 이동하여 답을 찾았습니다. 감사합니다 …….

  9.   Truko22

    제어 + 탈출 시스템 활동이있는 KDE에서 우리는 그 좀비들을 빨리 죽일 수 있습니다.

  10.  

    수정, ZOMBIE 프로세스가 아닌 ZOMBIE
    좀비는 영어로
    스페인어로 좀비

  11.   엘링크스

    럭셔리, 감사합니다!.

  12.   로베르토

    첫째, 좀비 프로세스라는 용어가 완전히 정확 해 보입니다. 또한 용어가 가장 중요하지 않습니다.
    요점은 msx가 나타내는 것처럼 동일한 위키피디아 (이 기사를 읽음)에서 좀비 프로세스가 실제로 죽었다는 것입니다.
    «프로세스가 종료되면 모든 메모리 및 관련 리소스가 역 참조되어 다른 프로세스에서 사용할 수 있습니다. 어쨌든 프로세스 테이블의 프로세스 항목은 여전히 ​​남아 있습니다.»
    즉, 프로세스가 더 이상 시스템 리소스를 차지하지 않으므로 msx에서 설명한대로 시스템의로드가 최소화됩니다.
    그러나 그것이 가진 유일한 것은 프로세스 테이블의 유효하지 않은 항목입니다 ... 그것이 수천 개라면 아마도 부하가 될 것입니다 (결국 프로세서는 프로세스 테이블을 읽어야하고 많은 쓸모없는 정보) 나쁜 프로그래밍 관행을 반영하는 것 외에도 (누군가 잘못 만들어진 응용 프로그램을 만들고 있습니다).
    그러나 그 자체로 게시물에 대한 설명은 그다지 정확하지 않으며 올바른 것은 msx가 제공하는 것입니다.