Alert
์ด ๊ธ์ Claude Code์ ๋์์ ๋ฐ์ ์์ฑ๋์์ต๋๋ค
Signal : ํ๋ก์ธ์ค์ ๋ณด๋ด๋ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ
- ์ปค๋ ๋๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํน์ ํ๋ก์ธ์ค์๊ฒ ์ด๋ฒคํธ๋ฅผ ์๋ฆฌ๊ธฐ ์ํด ๋ณด๋ด๋ ๋น๋๊ธฐ์ ํต็ฅ
- ํ๋ก์ธ์ค๋ ์๊ทธ๋์ ๋ฐ์ผ๋ฉด ๊ธฐ๋ณธ ๋์(์ข ๋ฃ, ๋ฌด์, ์ฝ์ด ๋คํ ๋ฑ)์ ์ํํ๊ฑฐ๋ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํด ์ง์ ์ฒ๋ฆฌํ ์ ์์
- ์๊ทธ๋ ๋ฒํธ๋ OS๋ง๋ค ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ง๋ง, ์๋๋ Linux ๊ธฐ์ค
์ ์ฒด ์๊ทธ๋ ๋ชฉ๋ก (๋ฒํธ์)
| ๋ฒํธ | ์ด๋ฆ | ๊ธฐ๋ณธ ๋์ | ์ค๋ช |
|---|---|---|---|
| 1 | SIGHUP | ์ข ๋ฃ | ํฐ๋ฏธ๋ ์ฐ๊ฒฐ ๋๊น / ๋ฐ๋ชฌ ์ค์ ๋ฆฌ๋ก๋ |
| 2 | SIGINT | ์ข ๋ฃ | ์ธํฐ๋ฝํธ (Ctrl+C) |
| 3 | SIGQUIT | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ์ข
๋ฃ + ์ฝ์ด ๋คํ (Ctrl+\) |
| 4 | SIGILL | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ์๋ชป๋ ๋ช ๋ น์ด (Illegal Instruction) |
| 5 | SIGTRAP | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ๋๋ฒ๊ฑฐ ํธ๋ฉ (breakpoint) |
| 6 | SIGABRT | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ๋น์ ์ ์ข
๋ฃ (abort()) |
| 7 | SIGBUS | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ๋ฒ์ค ์ค๋ฅ (์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋ ฌ) |
| 8 | SIGFPE | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ๋ถ๋์์์ ์์ธ (0์ผ๋ก ๋๋๊ธฐ ๋ฑ) |
| 9 | SIGKILL | ์ฆ์ ์ข ๋ฃ | ๊ฐ์ ์ข ๋ฃ (ํธ๋ค๋ง/๋ฌด์ ๋ถ๊ฐ) |
| 10 | SIGUSR1 | ์ข ๋ฃ | ์ฌ์ฉ์ ์ ์ ์๊ทธ๋ 1 |
| 11 | SIGSEGV | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ์ธ๊ทธ๋ฉํ ์ด์ ํดํธ (์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ) |
| 12 | SIGUSR2 | ์ข ๋ฃ | ์ฌ์ฉ์ ์ ์ ์๊ทธ๋ 2 |
| 13 | SIGPIPE | ์ข ๋ฃ | ์ฝ๋ ์ชฝ์ด ๋ซํ ํ์ดํ์ ์ฐ๊ธฐ ์๋ |
| 14 | SIGALRM | ์ข ๋ฃ | ์๋ ํ์ด๋จธ ๋ง๋ฃ (alarm()) |
| 15 | SIGTERM | ์ข ๋ฃ | ์ ์ ์ข
๋ฃ ์์ฒญ (kill ๊ธฐ๋ณธ๊ฐ) |
| 16 | SIGSTKFLT | ์ข ๋ฃ | ์คํ ํดํธ (ํ์ฌ๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์) |
| 17 | SIGCHLD | ๋ฌด์ | ์์ ํ๋ก์ธ์ค ์ข ๋ฃ/์ ์ง ์ ๋ถ๋ชจ์๊ฒ ์ ๋ฌ |
| 18 | SIGCONT | ์ฌ๊ฐ | ์ ์ง๋ ํ๋ก์ธ์ค ์ฌ๊ฐ |
| 19 | SIGSTOP | ์ผ์์ ์ง | ํ๋ก์ธ์ค ๊ฐ์ ์ ์ง (ํธ๋ค๋ง/๋ฌด์ ๋ถ๊ฐ) |
| 20 | SIGTSTP | ์ผ์์ ์ง | ํฐ๋ฏธ๋ ์ ์ง (Ctrl+Z) |
| 21 | SIGTTIN | ์ผ์์ ์ง | ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ํฐ๋ฏธ๋ ์ ๋ ฅ ์๋ |
| 22 | SIGTTOU | ์ผ์์ ์ง | ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ํฐ๋ฏธ๋ ์ถ๋ ฅ ์๋ |
| 23 | SIGURG | ๋ฌด์ | ์์ผ์ ๊ธด๊ธ(Out-of-band) ๋ฐ์ดํฐ ๋์ฐฉ |
| 24 | SIGXCPU | ์ข ๋ฃ + ์ฝ์ด ๋คํ | CPU ์๊ฐ ์ ํ ์ด๊ณผ |
| 25 | SIGXFSZ | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ํ์ผ ํฌ๊ธฐ ์ ํ ์ด๊ณผ |
| 26 | SIGVTALRM | ์ข ๋ฃ | ๊ฐ์ ํ์ด๋จธ ๋ง๋ฃ |
| 27 | SIGPROF | ์ข ๋ฃ | ํ๋กํ์ผ๋ง ํ์ด๋จธ ๋ง๋ฃ |
| 28 | SIGWINCH | ๋ฌด์ | ํฐ๋ฏธ๋ ์ฐฝ ํฌ๊ธฐ ๋ณ๊ฒฝ |
| 29 | SIGIO | ์ข ๋ฃ | I/O ๊ฐ๋ฅ ์๋ฆผ (๋น๋๊ธฐ I/O) |
| 30 | SIGPWR | ์ข ๋ฃ | ์ ์ ์ฅ์ |
| 31 | SIGSYS | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ์๋ชป๋ ์์คํ ์ฝ |
| 34โ64 | SIGRTMIN~SIGRTMAX | ์ข ๋ฃ | ์ค์๊ฐ ์๊ทธ๋ (์ฌ์ฉ์/์ฑ์ด ์์ ๋กญ๊ฒ ์ ์) |
์๊ทธ๋ ๋ณด๋ด๋ ๋ฐฉ๋ฒ
# kill ๋ช
๋ น์ด (์ด๋ฆ๊ณผ ๋ฌ๋ฆฌ '์ฃฝ์ด๊ธฐ'๋ง ํ๋ ๊ฒ ์๋๋ผ ์๊ทธ๋์ ๋ณด๋ด๋ ๋ช
๋ น์ด)
kill -<์๊ทธ๋๋ฒํธ ๋๋ ์ด๋ฆ> <PID>
# ์์
kill -15 1234 # SIGTERM (๋ฒํธ)
kill -SIGTERM 1234 # SIGTERM (์ด๋ฆ)
kill -TERM 1234 # SIG ์ ๋์ด ์๋ต ๊ฐ๋ฅ
# ํ๋ก์ธ์ค ์ด๋ฆ์ผ๋ก ๋ณด๋ด๊ธฐ
killall -TERM python
pkill -TERM -f "etl_pipeline.py"
# ์ ์ฒด ์๊ทธ๋ ๋ชฉ๋ก ํ์ธ
kill -l์ฃผ์ ์๊ทธ๋ ์ ๋ฆฌ
ํ๋ก์ธ์ค ์ข ๋ฃ ๊ด๋ จ
| ๋ฒํธ | ์ด๋ฆ | ๊ธฐ๋ณธ ๋์ | ์ค๋ช | ์ธ์ ์ฐ๋๊ฐ |
|---|---|---|---|---|
| 15 | SIGTERM | ์ข ๋ฃ | ์ ์ ์ข ๋ฃ ์์ฒญ. ํ๋ก์ธ์ค๊ฐ ์ ๋ฆฌ ์์ (cleanup) ํ ์ข ๋ฃํ ์ ์์ | kill ๋ช
๋ น์ ๊ธฐ๋ณธ๊ฐ. ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๊ณ ์ถ์ ๋ ๊ฐ์ฅ ๋จผ์ ์๋ |
| 9 | SIGKILL | ์ฆ์ ์ข ๋ฃ | ๊ฐ์ ์ข ๋ฃ. ํ๋ก์ธ์ค๊ฐ ๋ฌด์ํ๊ฑฐ๋ ํธ๋ค๋งํ ์ ์์ | SIGTERM์ผ๋ก ์ ์ฃฝ์ ๋ ์ตํ์ ์๋จ. ์ ๋ฆฌ ์์ ์์ด ์ฆ์ ์ข ๋ฃ๋จ |
| 2 | SIGINT | ์ข ๋ฃ | ์ธํฐ๋ฝํธ. ํฐ๋ฏธ๋์์ Ctrl+C ์
๋ ฅ ์ ๋ฐ์ | ํฌ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์ฆ์ ์ค๋จํ๊ณ ์ถ์ ๋ |
| 3 | SIGQUIT | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ํฐ๋ฏธ๋์์ Ctrl+\ ์
๋ ฅ ์ ๋ฐ์ | ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๋ฉด์ ๋๋ฒ๊น ์ฉ ์ฝ์ด ๋คํ ํ์ผ์ ๋จ๊ธฐ๊ณ ์ถ์ ๋ |
| 6 | SIGABRT | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ํ๋ก์ธ์ค ์ค์ค๋ก ๋น์ ์ ์ํ๋ฅผ ๊ฐ์งํ์ ๋ ๋ฐ์ | ์ง์ ๋ณด๋ด๋ ๊ฒฝ์ฐ๋ ๋๋ฌพ. abort() ํจ์๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ |
# 1๋จ๊ณ: ์ ์ ์ข
๋ฃ ์์ฒญ
kill 1234 # SIGTERM (๊ธฐ๋ณธ๊ฐ)
# 2๋จ๊ณ: ๋ช ์ด ๊ธฐ๋ค๋ ค๋ ์ ์ฃฝ์ผ๋ฉด ๊ฐ์ ์ข
๋ฃ
sleep 5 && kill -9 1234 # SIGKILL
# ์ค๋ฌด์์ ์์ฃผ ์ฐ๋ ํจํด (์คํฌ๋ฆฝํธ)
kill $PID
timeout 10 tail --pid=$PID -f /dev/null # ์ต๋ 10์ด ๋๊ธฐ
if kill -0 $PID 2>/dev/null; then # ์์ง ์ด์์์ผ๋ฉด
kill -9 $PID # ๊ฐ์ ์ข
๋ฃ
fiSIGKILL(9)์ ๋ฐ๋ก ์ฐ์ง ๋ง ๊ฒ
- SIGKILL์ ํ๋ก์ธ์ค์๊ฒ ์ ๋ฆฌํ ๊ธฐํ๋ฅผ ์ฃผ์ง ์์
- ์์ ํ์ผ ๋ฏธ์ญ์ , DB ์ปค๋ฅ์ ๋ฏธ๋ฐํ, ํ์ผ ์์ ๋ฑ์ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
- ๋ฐ๋์ SIGTERM โ ๋๊ธฐ โ SIGKILL ์์๋ก ์ฌ์ฉ
ํ๋ก์ธ์ค ์ผ์์ ์ง / ์ฌ๊ฐ ๊ด๋ จ
| ๋ฒํธ | ์ด๋ฆ | ๊ธฐ๋ณธ ๋์ | ์ค๋ช | ์ธ์ ์ฐ๋๊ฐ |
|---|---|---|---|---|
| 19 | SIGSTOP | ์ผ์์ ์ง | ํ๋ก์ธ์ค๋ฅผ ๋ฉ์ถค. ๋ฌด์/ํธ๋ค๋ง ๋ถ๊ฐ (SIGKILL์ฒ๋ผ ๊ฐ์ ) | ํ๋ก์ธ์ค๋ฅผ ์ ์ ์ผ๋ฆฌ๊ณ ์ถ์ ๋ |
| 20 | SIGTSTP | ์ผ์์ ์ง | ํฐ๋ฏธ๋์์ Ctrl+Z ์
๋ ฅ ์ ๋ฐ์. ํธ๋ค๋ง ๊ฐ๋ฅ | ์คํ ์ค์ธ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ณด๋ด๊ณ ์ถ์ ๋ |
| 18 | SIGCONT | ์ฌ๊ฐ | ์ ์ง๋ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์คํ | SIGSTOP/SIGTSTP๋ก ๋ฉ์ถ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ๋๋ฆด ๋ |
# ์๋๋ฆฌ์ค: CPU๋ฅผ ๋ง์ด ์ฐ๋ ๋ฐฐ์น ์์
์ด ์ด์ ์๋น์ค์ ์ํฅ์ ์ค ๋
# ๋ฐฐ์น ์์
์ ์ ๋ฉ์ถ๊ธฐ
kill -STOP 8823
# ์ด์ ์๋น์ค๊ฐ ์์ ๋๋ฉด ๋ค์ ์ฌ๊ฐ
kill -CONT 8823
# Ctrl+Z๋ก ๋ฉ์ถ ํ๋ก์ธ์ค ๋ค๋ฃจ๊ธฐ
./long_job.sh # ์คํ ์ค์ Ctrl+Z โ [1]+ Stopped
bg # ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ณ์ ์คํ
fg # ๋ค์ ํฌ๊ทธ๋ผ์ด๋๋ก ๊ฐ์ ธ์ค๊ธฐ์ค์ ๋ฆฌ๋ก๋ / ์ํ ๊ด๋ จ
| ๋ฒํธ | ์ด๋ฆ | ๊ธฐ๋ณธ ๋์ | ์ค๋ช | ์ธ์ ์ฐ๋๊ฐ |
|---|---|---|---|---|
| 1 | SIGHUP | ์ข ๋ฃ | ์๋๋ ํฐ๋ฏธ๋ ์ฐ๊ฒฐ ๋๊น ์๋ฆผ. ๋ง์ ๋ฐ๋ชฌ์ด ์ค์ ํ์ผ ๋ฆฌ๋ก๋ ์ฉ๋๋ก ์ฌ์ฉ | ์๋น์ค ์ฌ์์ ์์ด ์ค์ ๋ง ๋ค์ ์ฝ๊ฒ ํ๊ณ ์ถ์ ๋ |
| 10 | SIGUSR1 | ์ข ๋ฃ | ์ฌ์ฉ์ ์ ์ ์๊ทธ๋ 1. ํ๋ก๊ทธ๋จ์ด ์์ ๋กญ๊ฒ ์ฉ๋ ์ ์ | ํ๋ก๊ทธ๋จ๋ณ ์ปค์คํ ๋์ ํธ๋ฆฌ๊ฑฐ (๋ก๊ทธ ๋ ๋ฒจ ๋ณ๊ฒฝ, ํต๊ณ ์ถ๋ ฅ ๋ฑ) |
| 12 | SIGUSR2 | ์ข ๋ฃ | ์ฌ์ฉ์ ์ ์ ์๊ทธ๋ 2 | SIGUSR1๊ณผ ๋์ผํ๊ฒ ํ๋ก๊ทธ๋จ๋ณ ์ปค์คํ ์ฉ๋ |
# Nginx ์ค์ ๋ณ๊ฒฝ ํ ์ฌ์์ ์์ด ๋ฆฌ๋ก๋
sudo kill -HUP $(cat /var/run/nginx.pid)
# ๋๋
sudo nginx -s reload # ๋ด๋ถ์ ์ผ๋ก SIGHUP ์ ์ก
# sshd ์ค์ ๋ณ๊ฒฝ ํ ๋ฆฌ๋ก๋
sudo kill -HUP $(pgrep sshd)
# logrotate ํ ๋ก๊ทธ ํ์ผ ๋ค์ ์ด๊ธฐ
kill -HUP $(pgrep rsyslog)# dd ์์
์งํ ์ํฉ ํ์ธ (dd๋ SIGUSR1์ ๋ฐ์ผ๋ฉด ํ์ฌ ์งํ๋ฅ ์ถ๋ ฅ)
dd if=/dev/sda of=/backup/disk.img bs=4M &
kill -USR1 $(pgrep dd)
# 1048576 bytes (1.0 MB) copied, 2.3 s, 456 kB/s
# Node.js ๋๋ฒ๊ฑฐ ํ์ฑํ
kill -USR1 $(pgrep node)SIGHUP๊ณผ nohup์ ๊ด๊ณ
- ํฐ๋ฏธ๋์ ๋ซ์ผ๋ฉด ํด๋น ํฐ๋ฏธ๋์์ ์คํ๋ ํ๋ก์ธ์ค์ SIGHUP์ด ์ ์ก๋์ด ์ข ๋ฃ๋จ
nohup๋ช ๋ น์ด๋ SIGHUP์ ๋ฌด์ํ๊ฒ ๋ง๋ค์ด ํฐ๋ฏธ๋์ ๋ซ์๋ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ์คํ๋จnohup python long_job.py & # ํฐ๋ฏธ๋ ๋ซ์๋ ๊ณ์ ์คํ
๊ธฐํ ์์๋๋ฉด ์ข์ ์๊ทธ๋
| ๋ฒํธ | ์ด๋ฆ | ๊ธฐ๋ณธ ๋์ | ์ค๋ช | ์ธ์ ์ฐ๋๊ฐ |
|---|---|---|---|---|
| 13 | SIGPIPE | ์ข ๋ฃ | ์ฝ๋ ์ชฝ์ด ๋ซํ ํ์ดํ์ ์ฐ๋ ค ํ ๋ ๋ฐ์ | ์ง์ ๋ณด๋ด๊ธฐ๋ณด๋ค๋ ํ์ดํ๋ผ์ธ ๋๋ฒ๊น ์ ์ดํด ํ์ |
| 14 | SIGALRM | ์ข ๋ฃ | alarm() ํ์ด๋จธ ๋ง๋ฃ ์ ๋ฐ์ | ํ์์์ ๊ตฌํ์ ์ฌ์ฉ |
| 17 | SIGCHLD | ๋ฌด์ | ์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์์ ๋ ๋ถ๋ชจ์๊ฒ ์ ๋ฌ | ์ข๋น ํ๋ก์ธ์ค ์ดํด์ ํ์. ๋ถ๋ชจ๊ฐ ์ด๊ฑธ ์ฒ๋ฆฌํด์ผ ์์์ด ์ ๋ฆฌ๋จ |
| 11 | SIGSEGV | ์ข ๋ฃ + ์ฝ์ด ๋คํ | ์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ(Segmentation Fault) | ์ง์ ๋ณด๋ด์ง ์์. ํ๋ก๊ทธ๋จ ๋ฒ๊ทธ๋ก ๋ฐ์ํ๋ฉฐ ๋๋ฒ๊น ๋์ |
| 28 | SIGWINCH | ๋ฌด์ | ํฐ๋ฏธ๋ ์ฐฝ ํฌ๊ธฐ ๋ณ๊ฒฝ ์ ๋ฐ์ | ์ง์ ๋ณด๋ด์ง ์์. top, vim ๋ฑ์ด ํ๋ฉด ์ฌ์กฐ์ ์ ์ฌ์ฉ |
| 0 | (์๊ทธ๋ 0) | โ | ์ค์ ์๊ทธ๋์ด ์๋. ํ๋ก์ธ์ค ์กด์ฌ ์ฌ๋ถ๋ง ํ์ธ | ํ๋ก์ธ์ค๊ฐ ์ด์์๋์ง ์ฒดํฌํ ๋ |
# PID 1234๊ฐ ์ด์์๋์ง ํ์ธ (์๊ทธ๋์ ์ค์ ๋ก ๋ณด๋ด์ง ์์)
if kill -0 1234 2>/dev/null; then
echo "ํ๋ก์ธ์ค ์ด์์์"
else
echo "ํ๋ก์ธ์ค ์์"
fi์ ์ฒด ์์ฝ : ์์ฃผ ์ฐ๋ ์๊ทธ๋ ์นํธ์ํธ
Ctrl+C โ SIGINT(2) โ "๊ทธ๋งํด"
Ctrl+Z โ SIGTSTP(20) โ "์ ๊น ๋ฉ์ถฐ"
Ctrl+\ โ SIGQUIT(3) โ "์ฝ์ด ๋คํ ๋จ๊ธฐ๊ณ ์ข
๋ฃ"
kill PID โ SIGTERM(15) โ "์ ๋ฆฌํ๊ณ ์ข
๋ฃํด์ค" (๊ธฐ๋ณธ๊ฐ)
kill -9 PID โ SIGKILL(9) โ "์ง๊ธ ๋น์ฅ ์ฃฝ์ด" (์ตํ์ ์๋จ)
kill -HUP PID โ SIGHUP(1) โ "์ค์ ๋ค์ ์ฝ์ด"
kill -STOP PID โ SIGSTOP(19) โ "์ผ๋ ค!"
kill -CONT PID โ SIGCONT(18) โ "๋ค์ ์์ง์ฌ"
kill -0 PID โ (์์) โ "์ด์์์ด?"ํธ๋ค๋ง ๊ฐ๋ฅ ์ฌ๋ถ
| ์๊ทธ๋ | ๋ฌด์ ๊ฐ๋ฅ | ํธ๋ค๋ฌ ๋ฑ๋ก ๊ฐ๋ฅ | ๋น๊ณ |
|---|---|---|---|
| SIGKILL (9) | โ | โ | ๋ฌด์กฐ๊ฑด ์ฆ์ ์ข ๋ฃ |
| SIGSTOP (19) | โ | โ | ๋ฌด์กฐ๊ฑด ์ผ์์ ์ง |
| ๋๋จธ์ง ์ ๋ถ | โ | โ | ํ๋ก๊ทธ๋จ์ด ์์ ๋กญ๊ฒ ๋์ ์ ์ ๊ฐ๋ฅ |
- SIGKILL๊ณผ SIGSTOP๋ง ์์ธ์ ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์ ๋ ๊ฐ๋ก์ฑ๊ฑฐ๋ ๋ฌด์ํ ์ ์์
- ๊ทธ๋์ SIGKILL์ด โ์ตํ์ ์๋จโ์ด ๋๋ ๊ฒ