kill 명령어는 프로세스를 종료할 때 사용하는 리눅스 명령어입니다. 프로세스는 시스템에서 작업을 수행하는 기본 단위로, 가끔 정상적으로 종료되지 않거나 강제로 종료해야 할 필요가 있을 때 kill 명령어를 사용합니다. 주로 프로세스 ID(PID)를 이용하여 프로세스를 식별한 후 종료를 시도하며, 시그널(signal)을 이용해 다양한 방식으로 종료를 처리할 수 있습니다.
kill 명령어 기본 사용법
kill [옵션] PID
PID는 프로세스 ID로, 종료할 프로세스를 식별하는 숫자입니다. 옵션을 통해 특정한 시그널을 보낼 수 있으며, 기본적으로 SIGTERM(15번 시그널)이 사용됩니다.
주요 시그널
- SIGTERM(15): 프로세스에게 정상적으로 종료하도록 요청합니다.
- SIGKILL(9): 즉시 프로세스를 강제 종료합니다. 프로세스가 응답하지 않거나 종료되지 않을 때 사용합니다.
- SIGHUP(1): 프로세스를 재시작하거나 종료하는 데 사용됩니다.
ps 명령어로 프로세스 확인
먼저, ps 명령어로 프로세스를 확인하고 PID를 얻을 수 있습니다.
user@linux:~/Documents$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:00 ? 00:00:02 /sbin/init
user 1234 1200 0 09:30 pts/0 00:00:00 bash
user 5678 1234 0 09:31 pts/0 00:00:01 python3
위 예제에서 python3 프로세스의 PID는 5678입니다.
SIGTERM으로 프로세스 종료
user@linux:~/Documents$ kill 5678
이 명령어는 5678 PID를 가진 python3 프로세스에게 SIGTERM(15) 시그널을 보내 정상 종료를 요청합니다. 이 시그널은 프로세스가 정상 종료하도록 유도하지만, 프로세스가 이를 무시하거나 응답하지 않을 수 있습니다.
SIGKILL로 강제 종료
user@linux:~/Documents$ kill -9 5678
이 명령어는 SIGKILL(9) 시그널을 보내 python3 프로세스를 즉시 강제 종료합니다. 프로세스가 응답하지 않을 때 유용하며, 해당 프로세스는 강제로 메모리에서 제거됩니다.
SIGHUP으로 프로세스 재시작
user@linux:~/Documents$ kill -1 1234
SIGHUP(1) 시그널은 bash 셸을 다시 로드하거나 재시작하도록 유도하는 데 사용됩니다. 이 시그널은 셸이나 데몬 프로세스에 주로 사용되며, 설정 파일을 다시 읽어오는 등의 역할을 합니다.
모든 프로세스 종료
모든 프로세스를 종료하는 것은 PID 1을 제외한 프로세스에 사용될 수 있으며, 프로세스 그룹을 종료하거나 사용자의 모든 프로세스를 종료하는 데 유용합니다.
user@linux:~/Documents$ kill -9 -1
이 명령어는 현재 로그인한 사용자의 모든 프로세스를 종료합니다. 매우 위험한 명령이므로 신중하게 사용해야 합니다.
프로세스 그룹 종료
user@linux:~/Documents$ kill -15 -1234
-1234와 같은 음수 PID는 해당 프로세스 그룹에 있는 모든 프로세스에 시그널을 보냅니다. 이 경우 1234 PID가 속한 프로세스 그룹 전체가 종료됩니다.
프로세스 강제 종료 주의 사항
SIGKILL(9) 시그널은 프로세스를 강제 종료하기 때문에, 데이터 손실이나 파일 손상이 발생할 수 있습니다. 항상 SIGTERM(15) 시그널로 먼저 프로세스를 종료하고, 응답이 없는 경우에만 SIGKILL을 사용하는 것이 좋습니다.
참고 사이트
'Linux' 카테고리의 다른 글
[리눅스] jobs 명령어 완벽 가이드 사용법 (0) | 2024.10.02 |
---|---|
[리눅스] fg 명령어 완벽 가이드 사용법 (0) | 2024.10.02 |
[리눅스] bg 명령어 완벽 가이드 사용법 (0) | 2024.10.02 |
[리눅스] killall 명령어 완벽 가이드 사용법 (1) | 2024.10.01 |
[리눅스] ps 명령어 완벽 가이드 사용법 (0) | 2024.10.01 |
[리눅스] gzip, gunzip 명령어 완벽 가이드 사용법 (0) | 2024.10.01 |
[리눅스] zip, unzip 명령어 완벽 가이드 사용법 (0) | 2024.10.01 |
[리눅스] tar 명령어 완벽 가이드 사용법 (0) | 2024.09.30 |