C.W.K.
Stream
Lesson 03 of 10 · published

kill — 시그널 전송

~10 min · kill, signals, term

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

kill 은 이름이 잘못됨

kill 이 항상 죽이는 건 아냐 — 시그널 을 보냄. 시그널마다 의미 다름. 기본은 SIGTERM ('정리하고 종료해'). 시그널 처리하는 프로그램은 cleanup 가능. 핵 옵션 SIGKILL 만 못 잡아.

쓰게 될 시그널

  • kill PIDkill -TERM 과 동일. default. 정중한 종료.
  • kill -INT PID — SIGINT. Ctrl+C 와 동일.
  • kill -HUP PID — SIGHUP. 많은 데몬이 '재시작 없이 config reload' 신호로 처리.
  • kill -USR1 PID — 앱 정의. nginx 가 로그 rotation 신호로 사용.
  • kill -KILL PID 또는 kill -9 PID — SIGKILL. 강제 종료, cleanup 없음. 최후의 수단.
  • kill -STOP PID / -CONT — 일시정지 / 재개 (Ctrl+Z + fg 와 유사).

이름으로 kill

pkill firefox
pkill -f 'python myscript.py'        # full command 매치
killall Slack                          # macOS GUI 앱

점진적 escalation

  1. kill PID — 정중히.
  2. 5~10 초 대기. 행실 좋은 프로그램은 이 안에 종료.
  3. kill -KILL PID — SIGTERM 무시했을 때만.

바로 -9 가는 건 나쁜 습관 — 프로그램이 버퍼 flush / 파일 close / 락 해제 못 함. wedge 된 프로세스 비상시에만.

Code

정중 → 강제·bash
PID=$(pgrep -f myserver | head -1)
kill $PID                  # SIGTERM
sleep 5
if kill -0 $PID 2>/dev/null; then
  echo 'still alive — escalating'
  kill -9 $PID
fi

External links

Exercise

터미널 A 에서 sleep 999. 터미널 B 에서 pgrep -fa 'sleep 999'kill <PID> 로 정상 종료 확인. 다시 sleep 999kill -9 <PID> 로 강제 종료 — A 터미널이 어떻게 보고하는지 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.