「kill」은 사실 「시그널 전송」 명령.
시그널은 「프로세스에 보내는 비동기 메시지」 — 프로세스가 핸들러로 처리하거나 기본 동작(보통 종료) 수행.
SIGTERM (15).
「정중한 종료 요청」 — kill의 기본.
프로세스가 핸들러로 잡아 정리(파일 닫기·로그 마무리) 후 종료 가능.
무시할 수도 있음.
첫 시도로 권장.
SIGKILL (9).
「강제 종료」 — 무시 불가, 핸들러 못 등록.
커널이 즉시 프로세스 회수.
정리 시간 없음 — 데이터 손실·자원 누수 가능.
최후 수단.
SIGHUP (1).
「Hangup」 — 옛 모뎀 끊김 신호.
모던에서는 「설정 재로드」 의미로 자주 — nginx·apache 등 데몬이 SIGHUP 받으면 설정 다시 읽음.
재시작 없이 적용.
SIGINT (2)·SIGQUIT (3).
SIGINT — Ctrl+C(인터럽트).
SIGQUIT — Ctrl+\ (종료 + core dump).
인터랙티브 사용자 입력 시그널.
SIGSTOP·SIGCONT.
SIGSTOP — 일시 정지(Ctrl+Z의 SIGTSTP).
SIGCONT — 재개.
백그라운드·포그라운드 전환의 기반.
한 줄 요약
시그널은 프로세스에 보내는 메시지.
SIGTERM(15) 정중 종료, SIGKILL(9) 강제, SIGHUP(1) 설정 재로드, SIGINT(2) Ctrl+C, SIGSTOP/CONT 일시정지/재개.
-9는 최후 수단.
더 알아볼 것
- kill -L 또는 kill -l로 시그널 목록
- trap으로 시그널 핸들링
- SIGCHLD — 자식 종료 알림