Linux와 커맨드 라인 기초

응답하지 않게 된 프로세스를 멈출 때, 먼저 'kill 프로세스ID'를 사용하고 그래도 끝나지 않을 때만 'kill -9 프로세스ID'를 사용하는 것이 좋다고 한다. 그 이유로 올바른 것은?

  1. A기본값인 SIGTERM(15번)은 프로세스가 받아서 뒷정리를 한 다음 끝날 수 있지만, SIGKILL(9번)은 받을 수 없으며 뒷정리 없이 강제로 끝내기 때문에
  2. Bkill이 기본으로 보내는 SIGTERM(15번)은 자식 프로세스까지 포함하여 모두 끝내지만, SIGKILL(9번)은 지정한 프로세스만 끝내므로 영향이 작기 때문에
  3. CSIGKILL(9번)은 프로세스가 받아서 뒷정리를 한 다음 끝날 수 있지만, kill이 기본으로 보내는 SIGTERM(15번)은 무시할 수 없으며 즉시 끝내기 때문에
정답과 해설 보기

정답: A. 기본값인 SIGTERM(15번)은 프로세스가 받아서 뒷정리를 한 다음 끝날 수 있지만, SIGKILL(9번)은 받을 수 없으며 뒷정리 없이 강제로 끝내기 때문에

시그널은 OS가 프로세스에 사건을 알리는 짧은 통지로, 번호와 이름이 정해져 있습니다. kill은 옵션을 붙이지 않으면 SIGTERM(15번)을 보내며, 프로그램은 이를 받는 처리(핸들러)를 준비해 두고 작업 중인 파일을 저장하거나 임시 파일을 지운 다음 끝날 수 있습니다. SIGKILL(9번)은 프로세스가 받을 수도 무시할 수도 없으며 커널이 강제로 끝내므로, 쓰다 만 파일이 손상된 채 남는 경우가 있습니다. 멈추고 싶은 프로세스의 ID는 ps나 top으로 조사합니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 터미널에서 시간이 걸리는 ./sim.sh를 실행하는 도중에, 같은 터미널에서 다른 명령을 쓰고 싶어졌다. Ctrl+Z를 누른 후 bg를 실행했을 때의 동작으로 올바른 것은?
  2. SSH로 접속한 서버에서 시간이 걸리는 처리를 './run.sh &'로 시작한 다음 접속을 끊었더니 처리도 멈춰 버렸다. 접속을 끊은 후에도 처리를 계속하게 하는 시작 방법으로 가장 적절한 것은?
  3. 위의 두 줄을 셸(shell)에서 실행했을 때 표시되는 문자로 올바른 것은?
  4. 위의 명령을 순서대로 실행했을 때, 두 echo의 출력으로 올바른 것은?
  5. 위와 같이 스크립트 s.sh를 인수를 붙여 실행했을 때의 출력으로 올바른 것은?