ps aux 와 같은 명령어로 실행 중인 프로세스를 검사할 때 STAT 열이 있는 것을 발견할 수 있습니다. 이 열에 있는 코드를 이해하는 것이 프로세스 관리를 마스터하는 열쇠입니다. 각 코드는 특정 리눅스 프로세스 상태를 나타냅니다.
ps aux
리눅스에서의 프로세스 상태는 프로세스가 현재 무엇을 하고 있는지에 대한 스냅샷을 제공합니다. CPU 를 활발하게 사용하고 있습니까, 입력을 기다리고 있습니까, 아니면 종료되었습니까? 가장 흔하게 접하게 될 상태들을 살펴보겠습니다.
일반적인 프로세스 상태 코드 해독
STAT 열은 현재 리눅스 프로세스 상태를 보여줍니다. 가능한 상태는 많지만, 다음은 가장 자주 보게 될 상태들입니다. 이 리눅스 프로세스 상태 설명은 시스템 동작을 진단하는 데 도움이 될 것입니다.
-
R (Running or Runnable): 이 상태의 프로세스는 CPU 코어에서 활발하게 실행 중이거나, CPU 코어가 사용 가능해지는 즉시 실행될 준비가 된 실행 대기열 (run queue) 에 있습니다.
-
S (Interruptible Sleep): 이것은 가장 일반적인 리눅스 프로세스 상태 중 하나입니다. 프로세스는 사용자 입력이나 네트워크 패킷 수신과 같은 이벤트가 완료되기를 기다리고 있습니다. "인터럽트 가능 (interruptible)"하다는 것은 신호에 의해 깨어날 수 있음을 의미합니다.
-
D (Uninterruptible Sleep): 이 프로세스도 잠들어 있지만, 신호로 중단될 수 없는 상태입니다. 이는 일반적으로 I/O 작업 중 프로세스가 중단되면 상태가 손상될 수 있으므로 짧은 기간 동안 사용됩니다. 프로세스가 이 상태로 오래 머무르면 하드웨어 또는 드라이버에 문제가 있음을 나타낼 수 있습니다.
-
Z (Zombie): 좀비 프로세스는 실행을 마쳤지만, 프로세스 테이블에 여전히 항목이 남아 있습니다. 부모 프로세스가 종료 상태를 읽어 가기를 기다리고 있습니다. 소수의 좀비는 정상이지만, 많은 수가 있으면 부모 애플리케이션에 버그가 있음을 나타낼 수 있습니다.
-
T (Stopped): 프로세스는 작업 제어 신호 (예:
Ctrl+Z누름) 에 의해 일시 중지되거나 디버거에 의해 추적될 때 이 상태로 들어갑니다.SIGCONT신호로 재개될 수 있습니다.
이러한 기본적인 리눅스 프로세스 상태를 이해하면 시스템 활동에 대한 더 깊은 통찰력을 얻고 실행 중인 애플리케이션을 보다 효과적으로 관리할 수 있습니다.