리눅스마스터 1급 1차 기준으로는 시그널을 “정의 + 번호 + 발생 상황 + 시험 함정”으로 묶어서 외우는 것이 가장 효율적입니다.
아래는 기본 개념 → 자주 나오는 시그널 → 헷갈리는 비교 → 시험 암기 포인트 순서로 정리합니다.
1. Signal이란?
시그널(signal)은 프로세스에게 특정 사건이 발생했음을 알리는 소프트웨어 인터럽트입니다.
즉, 운영체제나 다른 프로세스, 또는 사용자가 현재 실행 중인 프로세스에게 ‘종료해라’, ‘멈춰라’, ‘계속 실행해라’, ‘예외가 발생했다’ 같은 통지(notification) 를 보내는 방식입니다.
핵심 관계는 다음과 같습니다.
- 보내는 주체: 커널, 다른 프로세스, 사용자
- 받는 대상: 프로세스
- 결과: 종료, 정지, 계속 실행, 무시, 사용자 정의 처리
2. 시험용 핵심 정의
시험에서는 보통 프로세스와 시그널의 관계 를 주로 물어봅니다.
- 시그널은 프로세스 제어 수단이다.
- kill 명령은 이름과 달리 반드시 죽이는 것만은 아니다.
- 시그널에 따라 종료, 일시 정지, 재개도 가능하다.
중요한 사실
- 어떤 시그널은 잡을 수 있음(catch)
- 어떤 시그널은 무시 가능(ignore)
- 어떤 시그널은 잡거나 무시할 수 없음
시험에서 자주 함정으로 다음 두 가지가 나옵니다.
- SIGKILL: 잡기 불가, 무시 불가
- SIGSTOP: 잡기 불가, 무시 불가
3. 가장 중요한 시그널 정리
| 시그널 | 번호 | 의미 | 발생/특징 | catch/ignore | 시험 포인트 |
|---|---|---|---|---|---|
| SIGTERM | 15 | 정상 종료 요청 | kill 기본값, 프로세스에게 정리 시간 부여 | 가능 | 정상 종료, 강제 종료 아님, 기본 종료 시그널 |
| SIGKILL | 9 | 강제 종료 | 즉시 종료, 거부 불가 | 불가 | 무조건 종료, 정리 없음, 최후 수단 |
| SIGSTOP | 19 | 실행 정지 | 프로세스 일시 중단 | 불가 | 종료가 아니라 정지, 재개는 SIGCONT |
| SIGCONT | 18 | 실행 재개 | SIGSTOP 이후 재개 시 사용 | 가능 | STOP과 CONT 세트로 외우기 |
| SIGINT | 2 | 인터럽트 | Ctrl + C | 가능 | 터미널 중단 요청, Ctrl+C = SIGINT |
| SIGQUIT | 3 | 종료 + 코어 덤프 | Ctrl + \ | 가능 | “정지 시그널” 함정—실제로는 종료·core dump |
| SIGHUP | 1 | Hangup | 터미널 연결 종료 / 실무에선 설정 재로드 | 가능 | 옛날 회선 끊김, 실무에선 reload |
| SIGALRM | 14 | 알람 시간 만료 | timer/alarm 관련 | 가능 | 기본 시그널 목록에 자주 등장 |
| SIGSEGV | 11 | Segmentation fault | 잘못된 메모리 접근 | 가능 | 프로그램 오류, 메모리 접근 위반 |
| SIGCHLD | 17 | 자식 프로세스 상태 변화 | 부모에게 자식 종료/상태변경 통지 | 가능 | 개념형으로 가끔 출제 |
시그널 이름 풀네임 (SIG = Signal)
| 시그널 | 줄임말 풀네임 |
|---|---|
| SIGTERM | Terminate (종료) |
| SIGKILL | Kill (강제 종료) |
| SIGSTOP | Stop (정지) |
| SIGCONT | Continue (재개) |
| SIGINT | Interrupt (인터럽트) |
| SIGQUIT | Quit (종료/덤프) |
| SIGHUP | Hangup (회선 끊김) |
| SIGALRM | Alarm (알람) |
| SIGSEGV | Segmentation Violation (세그멘테이션 오류) |
| SIGCHLD | Child (자식 프로세스) |
3.1. SIGTERM (15)
kill 1234
# 또는
kill -15 1234
- 의미: 정상 종료 요청(terminate)
- 특징: 프로세스에게 정리할 시간을 주고 종료 요청
- 기본 kill 명령의 기본값
- 시험 포인트
- 정상 종료
- 강제 종료 아님
- 기본 종료 시그널 예:
3.2. SIGKILL (9)
kill -9 1234
- 의미: 강제 종료
- 특징: 즉시 종료, 프로세스가 거부 불가
- catch 불가 / ignore 불가
- 시험 포인트
- 가장 자주 출제
- “프로세스를 무조건 종료”
- “정리 작업 없이 죽일 수 있음”
- “최후 수단”
SIGTERM과의 차이 • SIGTERM: 종료 요청 • SIGKILL: 즉시 강제 종료
3.3. SIGSTOP
• 번호: 보통 19 (시스템에 따라 표기가 다를 수 있으나 시험에서는 19로 주로 기억)
• 의미: 실행 정지
• 특징: 프로세스를 일시 중단
• catch 불가 / ignore 불가
예:
kill -19 1234
또는
kill -STOP 1234
시험 포인트
• 종료가 아니라 정지
• 다시 실행하려면 SIGCONT 필요
3.4. SIGCONT
• 번호: 보통 18
• 의미: 정지된 프로세스 계속 실행
• 특징: SIGSTOP 이후 재개할 때 사용
예:
kill -CONT 1234
시험 포인트
• STOP과 CONT는 세트로 외우기
• “정지 후 재개”
3.5. SIGINT
• 번호: 2
• 의미: 인터럽트
• 발생: 보통 Ctrl + C
• 특징: 터미널에서 실행 중인 프로세스를 중단 요청
시험 포인트
• 사용자 키입력과 연결
• Ctrl + C = SIGINT
⸻
3.6. SIGQUIT
• 번호: 3
• 의미: 종료 + 코어 덤프 가능
• 발생: 보통 Ctrl + \
• 특징: 단순 정지가 아니라 종료 쪽
시험 포인트
• “정지 시그널”로 헷갈리기 쉬움
• 실제로는 종료 및 core dump 관련
3.7. SIGHUP
• 번호: 1
• 의미: hangup
• 원래 의미: 터미널 연결 종료
• 실무 확장 의미: 데몬 설정 재적용 / 재읽기
SIGHUP 이해하기
- Hang up = 전화/회선을 끊다. 옛날에는 터미널이 모뎀(전화선)으로 접속했기 때문에, “연결이 끊겼다” = “회선이 끊겼다(hang up)”로 이해하면 됩니다.
- 원래 쓰임: 사용자가 터미널을 닫거나 SSH 접속을 끊으면, 그 터미널에서 실행 중이던 프로세스에게 커널이 SIGHUP을 보냅니다. “너 연결된 터미널이 없어졌어”라고 알려 주는 겁니다. 그래서 기본 동작은 프로세스 종료입니다.
- 실무에서의 재해석: 웹서버(nginx), httpd 같은 데몬은 터미널과 무관하게 백그라운드에서 돌아갑니다. 이때 SIGHUP을 “연결 끊김 → 종료”가 아니라 “설정 파일 다시 읽어라(reload)”로 처리하도록 프로그램이 만들어져 있는 경우가 많습니다.
- 예:
nginx -s reload,kill -HUP <nginx PID>→ 설정 재로드 후 프로세스는 계속 실행
- 예:
정리하면, 시험: “연결 끊김(hangup), 터미널 종료 시” / 실무: “데몬한테 설정 다시 읽으라고 보내는 시그널”로도 쓴다.
시험 포인트
• 옛날에는 회선 끊김
• 실무에서는 설정 재로드(reload) 의미로도 자주 사용
3.8. SIGALRM
• 번호: 14
• 의미: 알람 시간 만료
• 특징: timer/alarm과 관련
시험 빈도는 높지 않지만 기본 시그널 목록에 자주 등장합니다.
3.9. SIGSEGV
• 번호: 11
• 의미: segmentation fault
• 특징: 잘못된 메모리 접근
시험 포인트
• 프로그램 오류
• 메모리 접근 위반
3.10. SIGCHLD
• 번호: 17 또는 시스템별 상이
• 의미: 자식 프로세스 상태 변화
• 특징: 부모 프로세스에게 자식 종료/상태변경 통지
시험에서는 개념형으로만 가끔 나옵니다.
4. 시험에 가장 잘 나오는 TOP 묶음
이 6개는 거의 반드시 기억하는 것이 좋습니다.
이름 번호 의미 핵심 키워드
SIGHUP 1 연결 끊김 터미널 종료, 재로드
SIGINT 2 인터럽트 Ctrl+C
SIGQUIT 3 종료 + 덤프 Ctrl+
SIGKILL 9 강제 종료 무시 불가
SIGSEGV 11 메모리 접근 오류 segmentation fault
SIGTERM 15 정상 종료 요청 kill 기본값
그리고 제어용으로 이 둘 추가:
이름 번호 의미 SIGSTOP 19 실행 정지 SIGCONT 18 실행 재개
5. 헷갈리는 비교 정리
5.1. SIGTERM vs SIGKILL
SIGTERM • 정상 종료 요청 • 프로세스가 정리 가능 • 기본 kill 시그널
SIGKILL • 즉시 강제 종료 • 정리 기회 없음 • 잡기/무시 불가
시험에서는 보통 이렇게 물어봅니다. • “정상 종료 시그널은?” → SIGTERM • “강제 종료 시그널은?” → SIGKILL
5.2. SIGSTOP vs SIGTSTP
SIGSTOP • 강제 정지 • 잡기/무시 불가
SIGTSTP • 터미널 정지 시그널 • 보통 Ctrl + Z • 셸 job control과 관련 • 잡을 수 있음
리눅스마스터 시험에서는 주로 SIGSTOP이 더 직접적으로 나옵니다. 하지만 Ctrl + Z와 연결하면 SIGTSTP도 알아두면 좋습니다.
5.3. SIGINT vs SIGQUIT
SIGINT • Ctrl + C • 인터럽트 • 보통 실행 중단
SIGQUIT
• Ctrl +
• 종료 + core dump 가능
시험 함정은: • “터미널에서 입력된 정지 시그널”이라고 하면 SIGQUIT가 아니라 틀리게 낼 수 있음 • SIGQUIT는 단순 정지보다 종료 계열로 이해해야 안전함
6. kill 명령과 시그널 관계
기본 형태
kill [옵션 또는 시그널] PID
예:
kill 1000 kill -15 1000 kill -9 1000 kill -STOP 1000 kill -CONT 1000
시그널 목록 보기
kill -l
출력 예시는 시스템마다 조금 다를 수 있습니다.
7. 자주 나오는 키 조합
키 입력 시그널 의미 Ctrl + C SIGINT 실행 중단 Ctrl + \ SIGQUIT 종료 + 덤프 Ctrl + Z SIGTSTP 일시 정지
이건 필수 암기입니다.
⸻
8. 리눅스마스터 시험식 암기 포맷
시험용으로는 이렇게 외우는 게 가장 좋습니다.
1 SIGHUP : 연결 끊김
2 SIGINT : Ctrl+C
3 SIGQUIT : Ctrl+
9 SIGKILL : 강제 종료
11 SIGSEGV : 메모리 오류
15 SIGTERM : 정상 종료
18 SIGCONT : 재개
19 SIGSTOP : 정지
9. 문제 풀이 관점의 함정 정리
9.1. 함정 1
“kill 명령은 프로세스를 죽이는 명령이다.”
엄밀히는 틀릴 수 있습니다. kill은 시그널을 보내는 명령입니다.
9.2. 함정 2
“SIGKILL은 정상 종료 시그널이다.”
틀림. 정상 종료는 SIGTERM입니다.
9.3. 함정 3
“SIGSTOP은 프로세스를 종료한다.”
틀림. 종료가 아니라 일시 정지입니다.
9.4. 함정 4
“SIGQUIT는 정지 시그널이다.”
시험에서는 보통 틀린 설명으로 처리됩니다. SIGQUIT는 종료 및 core dump 성격입니다.
9.5. 함정 5
“SIGKILL과 SIGSTPO은 사용자가 무시할 수 있다.”
틀림. 둘 다 catch/ignore 불가입니다.
10. 사용자 기준으로 더 깊게 보면
사용자님은 시스템 SW 개발자라서 시험 암기보다 실제 동작까지 같이 묶어 이해하는 편이 오래 갑니다. 구조적으로 보면: • SIGTERM / SIGKILL: lifecycle 종료 제어 • SIGSTOP / SIGCONT / SIGTSTP: 스케줄링/실행 제어 • SIGINT / SIGQUIT / SIGHUP: 터미널/세션 이벤트 • SIGSEGV / SIGFPE / SIGILL: 예외/오류 계열
즉 시그널을 번호로만 외우기보다 발생 원인 축으로 묶으면 기억 유지가 훨씬 좋습니다.
11. 시험 직전 암기 버전
이것만 외워도 점수 효율이 높습니다.
SIGTERM(15) : 정상 종료 SIGKILL(9) : 강제 종료 SIGSTOP(19) : 정지 SIGCONT(18) : 재개 SIGINT(2) : Ctrl+C SIGQUIT(3) : Ctrl+\
12. 한 줄 요약
시험에서는 SIGTERM=정상종료, SIGKILL=강제종료, SIGSTOP=정지, SIGCONT=재개, Ctrl+C=SIGINT, Ctrl+=SIGQUIT 이 6개를 가장 먼저 고정하면 됩니다.
원하시면 다음 단계로 이어서 “시그널 문제 20개 퀴즈형” 또는 “프로세스/데몬/잡 컨트롤까지 같이 연결한 표”로 정리해드리겠습니다.