9. 프로세스 상태

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 신호로 재개될 수 있습니다.

이러한 기본적인 리눅스 프로세스 상태를 이해하면 시스템 활동에 대한 더 깊은 통찰력을 얻고 실행 중인 애플리케이션을 보다 효과적으로 관리할 수 있습니다.

로그인하여 학습 진행 상황을 저장하세요

로그인

연습 문제

지식을 적용하여 직접 실습해 보세요. 다음 실습은 리눅스 프로세스 관리 및 상태에 대한 이해를 강화하는 데 도움이 될 것입니다:

  1. 리눅스 프로세스 관리 및 모니터링 - 이 실습에서는 리눅스 시스템에서 프로세스를 관리하고 모니터링하는 필수 기술을 배웁니다. 전경 및 배경 프로세스와 상호 작용하는 방법, ps로 검사하는 방법, top으로 리소스 모니터링하는 방법, renice로 우선순위 조정하는 방법, kill로 종료하는 방법을 탐구합니다.

이 실습은 실제 시나리오에서 프로세스 상태 개념을 적용하고 리눅스 프로세스 관리에 대한 자신감을 구축하는 데 도움이 될 것입니다.

퀴즈

중단할 수 없는 슬립 (uninterruptible sleep) 을 나타내는 데 사용되는 STAT 코드는 무엇입니까? (상태 코드에 해당하는 단일 대문자 영문자를 제공하십시오.)