리눅스 시그널
IT 위키
- 프로세스에 보내는 비동기 알림
- 확인 : kill -l
프로세스에 어떤 사건이 일어났음을 알리거나 특정 동작을 요구하기 위해 커널이나 다른 프로세스가 보내는 신호. 번호와 `SIG`로 시작하는 이름을 함께 가진다.
| 번호 | 이름 | 기본 동작 | 설명 |
|---|---|---|---|
| 1 | SIGHUP | 종료 | 터미널 연결이 끊겼을 때. 데몬에서는 설정 파일 재읽기로 쓰는 관례가 있다 |
| 2 | SIGINT | 종료 | 인터럽트. Ctrl + C |
| 3 | SIGQUIT | 종료 + 코어 덤프 | Ctrl + \ |
| 9 | SIGKILL | 강제 종료 | 가로채거나 무시할 수 없다. 프로세스가 정리할 틈 없이 죽는다 |
| 11 | SIGSEGV | 종료 + 코어 덤프 | 잘못된 메모리 참조 |
| 15 | SIGTERM | 종료 | `kill` 의 기본 시그널. 프로세스가 마무리 작업을 하고 스스로 끝낼 수 있다 |
| 17 | SIGCHLD | 무시 | 자식 프로세스가 끝났을 때 |
| 18 | SIGCONT | 계속 | 멈춘 프로세스를 다시 실행 |
| 19 | SIGSTOP | 중지 | 가로채거나 무시할 수 없다 |
| 20 | SIGTSTP | 중지 | Ctrl + Z |
시그널 번호는 아키텍처에 따라 다를 수 있으나 위의 1, 2, 9, 15는 모든 플랫폼에서 같다.
$ kill 1234 $ kill -15 1234 $ kill -TERM 1234
시그널을 지정하지 않고 `kill` 만 쓰면 SIGTERM(15)이 전달된다. SIGKILL(9)이 아니다. `kill` 이라는 이름 때문에 9번이라고 착각하기 쉽다.
SIGTERM을 받은 프로세스는 열어 둔 파일을 닫고 임시 파일을 지우는 등 정리 후 종료할 수 있다. 반응하지 않을 때만 `kill -9` 로 강제 종료한다.
# 시그널 목록 확인 $ kill -l # 이름으로 프로세스를 찾아 보내기 $ pkill -HUP httpd $ killall -9 firefox # 데몬 설정 재적용 $ kill -HUP `cat /var/run/sshd.pid`
