>  기사  >  운영 및 유지보수  >  Linux에서 좀비가 발생하는 원인은 무엇입니까?

Linux에서 좀비가 발생하는 원인은 무엇입니까?

WBOY
WBOY원래의
2022-05-17 16:34:383931검색

리눅스가 좀비(좀비 프로세스)를 생성하는 이유는 부모 프로세스가 자식 프로세스를 생성한 후 자식 프로세스가 부모 프로세스보다 먼저 종료되지만 자식 프로세스가 보낸 종료 신호를 부모 프로세스가 처리하지 않기 때문입니다. 하위 프로세스를 좀비 프로세스라고 합니다. 이때 루트 ID를 사용하여 프로세스를 종료할 수 없습니다. 이는 하위 프로세스의 상위 프로세스를 종료하여 해결할 수 있습니다.

Linux에서 좀비가 발생하는 원인은 무엇입니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

리눅스가 좀비를 생성하는 이유는 무엇인가요?

원인:

Zombie 프로세스, 영어 이름은 Zombie 프로세스, 이름에서 알 수 있듯이 죽은 프로세스입니다. 그렇다면 좀비 프로세스란 정확히 무엇인가? 좀비 프로세스가 생성되는 이유는 부모 프로세스가 자식 프로세스를 생성한 후 자식 프로세스가 부모 프로세스보다 먼저 종료되기 때문이다. 그러면 자식 프로세스가 종료 신호를 보냅니다. 그러면 이 자식 프로세스는 좀비 프로세스가 됩니다.

이것은 소위 좀비(좀비 프로세스)입니다. 이는 fork()/execve() 프로세스 중에 하위 프로세스가 종료될 때 상위 프로세스가 여전히 존재한다고 가정하고 상위 프로세스가 설치되지 않았음을 의미합니다. SIGCHLD 신호 처리 함수는 fork() 이전에 waitpid를 호출합니다.() 자식 프로세스가 종료되기를 기다리고 명시적으로 신호를 무시하지 않으면 자식 프로세스는 좀비 프로세스가 되어 이 때 루트 ID도 kill됩니다. -9는 좀비 프로세스를 죽일 수 없습니다. 해결 방법은 좀비 프로세스의 부모 프로세스를 종료하는 것입니다(좀비 프로세스의 부모 프로세스가 존재해야 함). 좀비 프로세스는 "고아 프로세스"가 되며 프로세스 1번에 의해 채택되며 항상 init가 담당합니다. 좀비 프로세스를 정리합니다.

좀비 프로세스는 상위 프로세스가 종료되었음을 의미하며, 죽은 후 프로세스를 수락하는 프로세스가 없으면 좀비 프로세스가 됩니다.

해결 방법:

(1) 상위 프로세스는 다음을 사용합니다. wait 및 waitpid와 같은 함수는 하위 프로세스가 종료되어 상위 프로세스가 중단될 때까지 기다립니다.

wait() 또는 waitpid() 시스템 호출을 실행하면 하위 프로세스는 종료 후 즉시 프로세스 테이블의 데이터를 상위 프로세스에 반환하고 시스템은 즉시 진입점을 삭제합니다. 이 경우 존재하지 않는 프로세스가 생성되지 않습니다.

(2) 상위 프로세스가 매우 바쁜 경우 신호 기능을 사용하여 SIGCHLD에 대한 핸들러를 설치할 수 있습니다. 하위 프로세스가 종료된 후 상위 프로세스는 신호를 수신하고 처리기에서 대기를 호출하여 재활용할 수 있습니다.

(3) 상위 프로세스가 하위 프로세스의 핵심 콘텐츠가 언제 종료되는지 신경 쓰지 않으면 신호(SIGCLD, SIG_IGN) 또는 신호(SIGCHLD, SIG_IGN)를 사용하여 커널에 관심이 없음을 알릴 수 있습니다. 하위 프로세스가 끝나면 하위 프로세스가 종료됩니다. 그 후 커널은 재활용되고 더 이상 상위 프로세스에 신호를 보내지 않습니다.

(4) 두 번 포크하면 상위 프로세스가 하위 프로세스를 포크한 다음 하위 프로세스가 계속 작동합니다. 프로세스는 손자 프로세스를 분기한 다음 종료합니다. 그러면 손자 프로세스가 init에 의해 인수됩니다. 손자 프로세스가 끝나면 init가 이를 재활용합니다. 그러나 하위 프로세스의 재활용은 직접 수행해야 합니다.

추천 학습:

Linux 비디오 튜토리얼

위 내용은 Linux에서 좀비가 발생하는 원인은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.