리눅스 시그널

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 의 기본 시그널

[편집 | 원본 편집]
$ 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`

같이 보기

[편집 | 원본 편집]