비지박스의 크론드는 왜 좀비 프로세스인가요?
일명 좀비 프로세스다. 좀비 프로세스는 오래 전에 종료되었지만 여전히 프로세스 테이블의 슬롯을 차지하고 있는 프로세스입니다. 프로세스 테이블의 용량은 제한되어 있기 때문에 존재하지 않는 프로세스는 시스템의 메모리 자원을 점유하여 시스템 성능에 영향을 미칠 뿐만 아니라 너무 많으면 시스템 마비를 일으킨다. 우리는 각 Unix 프로세스가 프로세스 테이블에 진입점(entry point)을 갖고 있고 프로세스를 실행하기 위해 핵심 프로그램이 사용하는 모든 정보가 진입점에 저장된다는 것을 알고 있습니다. ps 명령을 사용하여 시스템의 프로세스 정보를 볼 때 표시되는 것은 프로세스 테이블의 관련 데이터입니다. fork() 시스템 호출로 새 프로세스가 생성되면 핵심 프로세스는 프로세스 테이블의 새 프로세스에 진입점을 할당한 다음 진입점에 해당하는 프로세스 테이블에 관련 정보를 저장합니다. 이러한 정보 중 하나는 상위 프로세스의 식별 번호입니다. 프로세스가 수명주기를 완료하면 exit() 시스템 호출을 실행합니다. 이때 프로세스 테이블의 원래 데이터는 프로세스의 종료 코드(exitcode), 실행 중에 사용된 CPU 시간 등으로 대체됩니다. 이 데이터는 시스템이 상위 프로세스에 전달할 때까지 유지됩니다. 자식 프로세스가 종료된 후 부모 프로세스가 데이터를 읽기 전에 존재하지 않는 프로세스가 나타나는 것을 볼 수 있습니다. 존재하지 않는 프로세스는 kill-9로 직접 종료할 수 없습니다. 그렇지 않으면 좀비 프로세스라고 부르지 않습니다. 존재하지 않는 프로세스가 생성되는 이유를 알면 존재하지 않는 프로세스를 쉽게 종료할 수 있습니다. 두 가지 방법이 있습니다. 1. 서버 컴퓨터를 다시 시작하는 것이 가장 간단하고 사용하기 쉬운 방법이지만, 서버 컴퓨터에서 다른 프로그램이 실행되고 있는 경우 이 방법은 비용이 매우 많이 듭니다. 따라서 다음 방법 중 하나를 사용해보십시오. 2. 존재하지 않는 좀비 프로세스의 상위 프로세스를 찾아 상위 프로세스를 종료하면 존재하지 않는 프로세스가 자동으로 사라집니다.