프로세스 상태
| 이름 | 플래그 | 커널 정의 및 설명 |
| 실행 | R | TASK_RUNNING : 프로세스가 CPU에서 실행중이거나 실행을 기다리고 있음. 프로세스가 실행 중(또는 실행 가능) 상태일 경우 사용자 루틴 또는 커널 루틴(시스템 호출)을 실행 중이거나 대기열에 추가되어 준비되었을 수 있음. |
| 수면 | S | TASK_INTERRUPTIBLE : 프로세스가 하드웨어 요청, 시스템 리소스 액세스 등 일부 조건을 대기 중. 조건을 만족하면 Running상태로 복귀. |
| D | TASK_UNINTERRUPTIBLE : S와 다른 점은 신호에 응답하지 않음. 프로세스 중단 시 예기치 않은 장치 상태가 발생할 수 있는 경우에 사용 | |
| K | TASK_KILLABLE : 중단되지 않는 D 상태와 동일하지만, 대기 중인 작업이 강제 종료 신호에 응답할 수 있도록 수정됨. 유틸리티에서 강제 종료한 프로세스를 D로 표시하는 경우가 많음. | |
| I | TASK_REPORT_IDLE : D 상태의 하위 집합. 커널이 부하 평균을 계산할 때 이러한 프로세스를 카운트하지 않음. 커널 스레드에 사용됨. TASK_UNINTERRUPTIBLE 및 TASK_NOLOAD 플래그가 설정됨. 치명적인 신호를 받아들임. |
|
| 중지 | T | TASK_STOPPED : 일반적으로 사용자나 다른 프로세스의 신호를 받아 프로세스가 중지(일시 중단)됨. 다른 신호를 통해 프로세스가 재개되어 실행 중 상태로 돌아갈 수 있음. |
| T | TASK_TRACED : 디버그 중인 프로세스도 일시적으로 중디되며 T 상태 플래그를 공유. | |
| 좀비 | Z | EXIT_ZOMBIE : 하위 프로세스가 종료될 때 상위 프로세스에 신호를 보냄. PID를 제외한 모든 리소스 릴리즈 |
| X | EXIT_DEAD : 상위 프로세스가 나머지 하위 프로세스 구조를 클린업하면 프로세스는 완전히 릴리스됨. 이 상태는 프로세스 목록 유틸리티로 관찰할 수 없음. |
프로세스 제어 신호
kill -l 명령어로 신호 목록을 확인할 수 있습니다.
아래는 주요 신호 정보입니다.
| 신호 | 이름 | 정의 |
| 1 | HUP | Hangup : 터미널의 제어 프로세스 종료를 보고. 또한 프로세스를 종료하지 않고 재초기화(구성 재로드)하도록 요청. |
| 2 | INT | Keyboard Interrupt : 프로그램 종료, 차단하거나 처리할 수 있음. INTR(인터럽트) 키 시퀀스 (Ctrl+c)를 눌러 전송. |
| 3 | QUIT | Keyboard quit : SIGINT와 유사하며 종료할 때 프로세스 덤프를 추가. QUIT 키 시퀀스 (Ctrl+\)를 눌러 전송. |
| 9 | KILL | Kill, Unblockable : 갑작스럽게 프로그램이 종료됨. 차단, 무시 또는 처리할 수 없고 일관성 있게 치명적임. |
| 15 default |
TERM | Terminate : 프로그램이 종료됨. SIGKILL과 달리 차단, 무시 또는 처리할 수 있음. 프로그램이 종료되도록 요청하는 깔끔한 방법으로 프로그램이 종료되기 전에 필수 작업 및 자체 정리를 완료할 수 있음. |
| 18 | CONT | Continue : 프로세스가 중지된 경우 재개하기 위해 전송합니다. 차단할 수 없습니다. 처리되더라도 항상 프로세스 재개 |
| 19 | STOP | Stop, Unblockable : 프로세스 일시 중지, 차단하거나 처리할 수 없음. |
| 20 | TSTP | Keyboard stop : SIGSTOP과 달리 차단, 무시 또는 처리할 수 있음. 일시 중단 키 시퀀스 (Ctrl+z)를 눌러 전송. |
* 신호 넘버보다는 신호 이름을 사용하는 것을 권장.
프로세스 제어 및 유틸 명령어
kill : PID에 시그널 전송
killall : 이름으로 실행중인 모든 프로세스 종료 (내가 실행한 프로세스뿐 아니라 시스템 전체 대상)
pkill : 이름으로 프로세스 종료
pgrep : 이름으로 pid 찾기
pidof : 실행중인 프로그램의 pid 확인 (프로세스 이름이 패턴에 정확하게 검색이 됨)
pstree : 프로세스 트리 시각화
fg [%작업번호] : 일시 중지되었거너 백그라운드로 실행 중인 작업을 포그라운드로 가져옴 (작업 번호는 jobs로 확인)
bg [%작업번호] : 일시 정지된 작업을 백그라운드에서 계속 실행
jobs : 현재 셸에서 실행한 작업 목록(백그라운드, 일시정지 등)을 보여 줌.
w : 로그인 사용자 정보 및 활동 보기
systemctl restart와 kill -1 비교
"systemctl restart"
- 서비스를 완전히 재시작, PID 바뀜
- 대상 : systemd 서비스 단위
- 적용 방식 : 프로세스 종료 후 재시작
- 파일 재로드 : 서비스에 따라 다름
"kill -1"
- 프로세스에 SIGHUP 시그널 전달, PID 유지, 무중단 재로딩
- 대상 : 단일 프로세스 (PID)
- 적용 방식 : 종료하지 않고 구성 재로딩 또는 자체 정의된 행동 수행
- 파일 재로드 : 대부분 설정 파일 다시 읽음
오히려 systemctl reload와 kill -1이 거의 흡사합니다. 다만 reload는 서비스 유닛 파일 내에 정의가 없을 수 있고, 정의에 따라 kill -1 과 다를 수도 있습니다.
'Linux' 카테고리의 다른 글
| rrqm과 wrqm (0) | 2025.12.18 |
|---|---|
| Dirty Page (0) | 2025.12.16 |
| [Linux] VIM 편집기 활용 (0) | 2025.05.15 |
| [Linux] 패턴을 이용한 파일 선택 방법 (0) | 2025.04.29 |
| [Linux] 링크에 관해 (inode, 하드링크, 심볼릭링크) (0) | 2025.04.25 |