7. kill (종료)

리눅스에서는 시그널을 보내 프로세스를 관리할 수 있습니다. 이를 위한 주요 명령어는 kill이며, 이름과는 달리 프로세스를 종료하는 시그널뿐만 아니라 다양한 시그널을 보낼 수 있습니다.

kill sigterm 을 사용한 기본 종료

kill 명령어를 프로세스 ID(PID) 만 사용하여 실행하면 기본적으로 TERM 시그널을 보냅니다. 이는 프로그램에게 정상적으로 종료하도록 요청하는 표준적인 방법입니다.

kill 12445

kill sigterm 시그널 (또는 SIGTERM 또는 시그널 15) 은 프로세스가 깨끗하게 종료되도록 요청합니다. 이는 프로세스에게 진행 상황을 저장하고 리소스를 적절히 해제할 기회를 줍니다. 시그널 번호를 명시적으로 사용하여 kill -15 12445를 위의 명령어와 동일하게 만들 수도 있습니다. 이는 일반적인 kill -15 linux 검색에 대한 답변이 됩니다.

SIGKILL 을 사용한 강제 종료

때로는 프로세스가 응답하지 않아 SIGTERM 시그널에 반응하지 않을 수 있습니다. 이런 경우에는 KILL 시그널을 사용하여 강제로 중지시킬 수 있습니다.

kill -9 12445

SIGKILL 시그널 (시그널 9) 은 프로세스가 정리할 기회 없이 즉시 종료시킵니다. 이는 kill vs terminate 논쟁에서 핵심적인 차이점입니다. SIGKILL은 무조건적인 종료인 반면, SIGTERM은 정중한 요청입니다.

기타 일반적인 시그널 이해하기

SIGTERMSIGKILL이 가장 일반적이지만, 다른 시그널들도 프로세스 관리에 유용합니다.

  • SIGHUP: kill sighup 시그널 (Hangup, 시그널 1) 은 전통적으로 제어 터미널이 닫힐 때 프로세스에 전송됩니다. 데몬 프로세스에게 설정 파일을 다시 로드하도록 지시하는 데 사용될 수 있습니다.
  • SIGINT: 인터럽트 시그널 (시그널 2) 은 Ctrl-C를 누를 때 전송됩니다. 프로세스에게 현재 작업을 중단하도록 요청합니다.
  • SIGSTOP: 이 시그널 (시그널 19) 은 프로세스를 종료하지 않고 일시 중지시킵니다. 프로세스는 나중에 SIGCONT 시그널로 재개될 수 있습니다.

kill -0 로 프로세스 존재 확인하기

특별한 사용 사례는 linux kill -0입니다. 이 명령어는 실제로 시그널을 보내지 않고 지정된 PID 를 가진 프로세스가 존재하는지, 그리고 해당 프로세스에 시그널을 보낼 권한이 있는지 확인합니다.

kill -0 12445

명령어가 성공적으로 실행되면 (종료 코드 0), 프로세스가 존재하는 것입니다. 실패하면 프로세스가 없거나 권한이 없는 것입니다.

로그인하여 학습 진행 상황을 저장하세요

로그인

연습 문제

배운 내용을 적용하기 위해, 프로세스 관리 및 종료에 대한 이해를 강화할 수 있는 실습 랩을 시도해 보세요:

  1. 리눅스 프로세스 관리 및 모니터링 - 이 랩에서는 리눅스 시스템에서 프로세스를 관리하고 모니터링하는 필수 기술을 배우게 됩니다. 포그라운드 및 백그라운드 프로세스와 상호 작용하는 방법, ps로 검사하는 방법, top으로 리소스 모니터링하는 방법, renice로 우선순위 조정하는 방법, 그리고 kill로 종료하는 방법을 탐구하게 됩니다.

이 랩은 프로세스 제어 및 종료 개념을 실제 시나리오에 적용하고 리눅스 프로세스 관리 역량을 키우는 데 도움이 될 것입니다.

퀴즈

기본 `kill` 명령어의 시그널 이름은 무엇입니까? 영어로 답하십시오. 답변은 대소문자를 구분합니다.