시그널과 kill
쉽게 말하면
실행 중인 프로그램에 보내는 짧은 쪽지를 시그널이라고 해요. '정리하고 끝내 주세요', '지금 당장 멈춰요', '잠깐 쉬어요' 같은 종류가 있어요. kill은 이름과 달리 이 쪽지를 보내는 명령이에요.
시험용 정의
시그널은 프로세스에 보내는 짧은 신호다. kill은 PID로, killall은 정확한 이름으로, pkill은 이름 패턴(과 사용자 등 조건)으로 시그널을 보낸다. 이름과 달리 "죽이기"만이 아니라 멈춤·재개·설정 다시 읽기도 시그널이다.
비유로 이해하기
시그널은 직원에게 보내는 짧은 쪽지다. "퇴근 준비하세요(15)", "지금 당장 나가세요(9)", "잠깐 멈춰요(19)", "계속하세요(18)", "새 지침 다시 읽으세요(1)".
자세히
명령 형식
| 명령 | 뜻 |
|---|---|
| kill PID | 15번 보내기 |
| kill -9 PID / kill -KILL PID / kill -s 9 PID | 9번 보내기 (여러 표기) |
| kill %1 | 작업 번호 1에 보내기 |
| kill -l | 시그널 목록 |
| killall 이름 | 그 이름의 모든 프로세스 |
| pkill 패턴 | 이름 패턴으로. pkill -u kim 은 kim의 모든 프로세스 |
| pkill -9 -t pts/1 | 특정 터미널 사용자 강제 로그아웃 |
시험에 이렇게 나와요
- kill의 기본 시그널 → SIGTERM, 15번
- 번호 ↔ 이름: 1 SIGHUP, 2 SIGINT, 3 SIGQUIT, 9 SIGKILL, 15 SIGTERM, 20 SIGTSTP. 번호 순으로 늘어놓기도 나온다
- 키 ↔ 시그널: Ctrl+C = SIGINT(2), Ctrl+\ = SIGQUIT(3), Ctrl+Z = SIGTSTP(20)
- 시그널 목록 확인 →
kill -l, 작업 번호로 보내기 →kill %2 - 여러 PID를 한 번에 →
kill PID PID …, 이름으로 종료 →killall·pkill
확인 문제
Q1. kill 3200처럼 시그널 번호 없이 kill을 쓰면 어떤 시그널이 갈까?
- 1 SIGHUP
- 15 SIGTERM (정상 종료 요청)
- 2 SIGINT
- 9 SIGKILL (강제 종료)
정답 보기
2번 15 SIGTERM (정상 종료 요청)
kill의 기본은 15번 SIGTERM이다. 프로그램에게 "정리하고 끝내라"고 요청하는 신호라 파일 저장 같은 마무리를 할 기회를 준다. 그래도 안 끝나면 9번 SIGKILL로 강제로 끝낸다(무시·가로채기 불가).
Q2. jobs로 본 작업 번호 2번 백그라운드 작업을 끝내는 명령은?
- kill -2
- fg 2
- kill %2
- kill 2
정답 보기
3번 kill %2
%작업번호. kill 2는 PID 2, kill -2는 SIGINT 지정.
Q3. 시그널 번호가 작은 것부터 올바르게 나열한 것은?
- SIGHUP, SIGKILL, SIGTERM
- SIGINT, SIGHUP, SIGKILL
- SIGTERM, SIGKILL, SIGINT
- SIGKILL, SIGHUP, SIGTERM
정답 보기
1번 SIGHUP, SIGKILL, SIGTERM
1 HUP, 9 KILL, 15 TERM.
Q4. kill 명령에서 시그널을 지정하지 않았을 때 전달되는 시그널은?
- SIGHUP(1)
- SIGINT(2)
- SIGKILL(9)
- SIGTERM(15)
정답 보기
4번 SIGTERM(15)
SIGTERM(15)이다. 정상적으로 끝내 달라는 요청이다. 그래도 안 끝나면 SIGKILL(9)로 강제 종료한다.
Q5. 키보드에서 Ctrl+C를 눌렀을 때 전달되는 시그널은?
- SIGQUIT
- SIGKILL
- SIGINT
- SIGTSTP
정답 보기
3번 SIGINT
Ctrl+C = SIGINT(2), Ctrl+Z = SIGTSTP(20).
Q6. 프로세스가 무시하거나 가로챌 수 없는 시그널로만 묶은 것은?
- SIGHUP, SIGCONT
- SIGKILL, SIGSTOP
- SIGTSTP, SIGQUIT
- SIGTERM, SIGINT
정답 보기
2번 SIGKILL, SIGSTOP
SIGKILL(9)과 SIGSTOP(19)이다. 프로세스가 막을 수 없어 반드시 종료·정지된다. SIGTERM이나 SIGINT는 프로그램이 가로채 처리할 수 있다.
Q7. httpd라는 이름의 프로세스를 모두 종료하는 명령은?
- ps -k httpd
- killall httpd
- kill -a httpd
- kill httpd
정답 보기
2번 killall httpd
killall(또는 pkill). kill은 PID를 받는다.
헷갈리기 쉬운 O·X
kill -9는 프로세스가 정리 작업을 마친 뒤 종료하게 한다.
정답 보기
X 즉시 강제 종료. 정리 기회를 주는 건 15번.
데몬에 SIGHUP(1)을 보내 설정 파일을 다시 읽게 하는 경우가 많다.
정답 보기
O 맞는 설명이다.
일반 사용자도 root 소유 프로세스를 kill할 수 있다.
정답 보기
X 자기 프로세스만 가능.