프로세스 상태란
리눅스 커널은 모든 프로세스를 몇 가지 상태 중 하나로 관리합니다. ps aux나 top의 STAT 컬럼에 표시되는 알파벳이 바로 이 상태입니다.
주요 상태값
- R (Running): 실행 중이거나 실행 대기 큐에 있는 정상 상태
- S (Sleeping): 인터럽트 가능한 대기 상태로, 대부분의 idle 프로세스가 여기 해당
- D (Uninterruptible Sleep): 디스크 I/O 등을 기다리며 시그널로도 깨울 수 없는 상태
- Z (Zombie): 이미 종료됐지만 부모 프로세스가 아직 회수(wait)하지 않은 상태
실무에서 주의할 상태
D 상태 프로세스가 오래 지속되면 스토리지 I/O 병목이나 NFS 마운트 문제를 의심해야 하고, kill -9로도 종료되지 않는 경우가 많아 근본 원인(디스크·네트워크 스토리지 상태)을 먼저 확인해야 합니다. Z(좀비) 프로세스는 자원을 거의 점유하지 않지만, 과도하게 쌓이면 부모 프로세스의 버그(자식 프로세스 회수 누락)를 의심해야 합니다.