시스템(Linux)

좀비(Zombie) 프로세스에 대해 알아보겠습니다.

forward error correction Circle 2024. 2. 20. 08:28
반응형

Ⅰ. 좀비 프로세스 란?

"좀비 프로세스"는 프로세스가 종료되면, 일반적으로 해당 프로세스의 메모리 및 자원은 운영 체제에 의해 회수되지만, 종료된 프로세스의 부모 프로세스가 해당 종료 정보를 확인하지 않거나 처리하지 않는 경우, 종료된 프로세스는 여전히 시스템 프로세스 테이블에 남아있게 됩니다. 이러한 종료된 프로세스는 "좀비"가 되며, 시스템 리소스를 소비하면서 시스템의 성능에 부정적인 영향을 미칠 수 있습니다.

 좀비 프로세스는 주로 부모 프로세스가 적절한 종료 상태를 수집하지 않거나 처리하지 않는 경우에 발생할 수 있습니다. 이를 방지하기 위해서는 부모 프로세스가 자식 프로세스의 종료 상태를 정확하게 처리하도록 보장해야 합니다. 보통은 부모 프로세스가 자식 프로세스의 종료 상태를 확인하고, 해당 정보를 수집하고 메모리에서 제거함으로써 좀비 프로세스가 생성되지 않도록 관리해야 합니다.

 

Ⅱ. 좀비 프로세스 확인 방법

 주로 사용되는 리눅스와 유닉스 기반 시스템에서는 다음과 같은 명령어를 사용하여 좀비 프로세스를 확인할 수 있습니다:

ⅰ) ps 명령어: ps 명령어는 현재 실행 중인 프로세스를 나열하고 관련 정보를 제공합니다. 

ps aux | grep 'Z'


이 명령어는 모든 프로세스를 보여주고, 상태가 'Z'인 것(좀비 프로세스)을 필터링하여 표시합니다.

ⅱ) top 명령어: top 명령어는 시스템의 실시간 프로세스 정보를 표시합니다. top을 실행하고, 상태가 'Z'인 프로세스를 확인할 수 있습니다.

ⅲ) htop 명령어: htop은 top 명령어의 확장 버전으로, 더 직관적이고 사용하기 쉬운 프로세스 관리 도구입니다. htop을 실행하고, 상태가 'Z'인 프로세스를 확인할 수 있습니다.

ⅳ) pstree 명령어: pstree 명령어는 프로세스 트리를 표시합니다. 부모-자식 관계를 시각적으로 확인할 수 있어서 좀비 프로세스가 어떤 부모 프로세스에 속해 있는지 확인할 수 있습니다.

 

Ⅲ. 좀비 프로세스를 종료하는 방법

ⅰ) 좀비 프로세스의 부모 프로세스를 종료 또는 재시작: 종료된 자식 프로세스의 종료 상태를 수집하고 처리하지 않는 것이 주로 좀비 프로세스의 원인입니다. 따라서 해당 프로세스의 부모 프로세스를 종료하거나 재시작하여 문제를 해결할 수 있습니다.

ⅱ) kill 명령어를 사용하여 직접 종료: kill 명령어를 사용하여 좀비 프로세스를 직접 종료할 수 있습니다. PS 명령어를 통해  PID 를 확인 후에 Kill 명령어를 통해 종료 할 수 있습니다.

kill -9 [PID]


ⅲ) 재부팅: 간단한 방법이지만 효과적일 수 있습니다. 시스템을 재부팅하면 모든 프로세스가 종료되고 시스템이 초기화됩니다. 하지만 이 방법은 다른 프로세스에 영향을 줄 수 있으므로 주의해야 합니다.

ⅳ) 재시작 또는 다시 빌드: 어플리케이션이나 서비스에서 발생한 좀비 프로세스 문제를 해결하기 위해 해당 어플리케이션 또는 서비스를 재시작하거나 다시 빌드하여 좀비 프로세스를 제거할 수 있습니다.

반응형