Linux와 커맨드 라인 기초
응답하지 않게 된 프로세스를 멈출 때, 먼저 'kill 프로세스ID'를 사용하고 그래도 끝나지 않을 때만 'kill -9 프로세스ID'를 사용하는 것이 좋다고 한다. 그 이유로 올바른 것은?
- A기본값인 SIGTERM(15번)은 프로세스가 받아서 뒷정리를 한 다음 끝날 수 있지만, SIGKILL(9번)은 받을 수 없으며 뒷정리 없이 강제로 끝내기 때문에
- Bkill이 기본으로 보내는 SIGTERM(15번)은 자식 프로세스까지 포함하여 모두 끝내지만, SIGKILL(9번)은 지정한 프로세스만 끝내므로 영향이 작기 때문에
- CSIGKILL(9번)은 프로세스가 받아서 뒷정리를 한 다음 끝날 수 있지만, kill이 기본으로 보내는 SIGTERM(15번)은 무시할 수 없으며 즉시 끝내기 때문에
정답과 해설 보기
정답: A. 기본값인 SIGTERM(15번)은 프로세스가 받아서 뒷정리를 한 다음 끝날 수 있지만, SIGKILL(9번)은 받을 수 없으며 뒷정리 없이 강제로 끝내기 때문에
시그널은 OS가 프로세스에 사건을 알리는 짧은 통지로, 번호와 이름이 정해져 있습니다. kill은 옵션을 붙이지 않으면 SIGTERM(15번)을 보내며, 프로그램은 이를 받는 처리(핸들러)를 준비해 두고 작업 중인 파일을 저장하거나 임시 파일을 지운 다음 끝날 수 있습니다. SIGKILL(9번)은 프로세스가 받을 수도 무시할 수도 없으며 커널이 강제로 끝내므로, 쓰다 만 파일이 손상된 채 남는 경우가 있습니다. 멈추고 싶은 프로세스의 ID는 ps나 top으로 조사합니다.