Linux

[linux] 프로세스 상태 및 명령어

studioesso 2025. 5. 29. 13:56

 

프로세스 상태


 이름 플래그 커널 정의 및 설명
실행 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