WIPIVERSE

ps (유닉스)

ps는 유닉스(Unix) 및 유닉스 계열 운영 체제에서 현재 실행 중인 프로세스(process)들의 정보를 표시하는 명령어이다. "process status" 또는 "process state"의 약어로 알려져 있으며, AT&T 벨 연구소(Bell Labs)에서 개발되어 1973년 2월에 처음 발표되었다.

개요

ps 명령어는 실행 당시 시스템에서 구동 중인 프로세스들의 스냅숏(snapshot)을 제공한다. 실시간으로 갱신되는 정보가 필요할 경우에는 top이라는 관련 유틸리티가 사용된다. ps는 시스템 관리자나 사용자가 현재 시스템에서 어떤 프로세스가 실행 중인지 확인하고, 프로세스 ID(PID), CPU 사용 시간, 연결된 터미널(TTY), 프로세스 상태 등을 파악하는 데 사용된다.

기본 출력 항목

ps 명령어의 기본 출력에는 다음과 같은 열(column)이 포함된다.

  • PID (Process ID): 각 프로세스에 할당된 고유 식별 번호
  • TTY: 프로세스가 연결된 터미널
  • TIME: 프로세스가 지금까지 사용한 CPU 시간
  • CMD: 프로세스를 실행한 명령어의 이름

주요 옵션

ps 명령어는 다양한 옵션을 제공하며, 시스템 계열에 따라 옵션 표기 방식에 차이가 있다. 크게 UNIX/POSIX 계열 옵션(대시 - 사용), BSD 계열 옵션(대시 없음), GNU 계열 옵션(이중 대시 -- 사용)으로 구분된다.

POSIX/UNIX 표준 옵션

  • -e (또는 -A): 모든 프로세스를 출력한다.
  • -f: 완전한(full) 형식으로 출력한다. UID, PPID(부모 PID), C(CPU 사용률), STIME(시작 시간) 등의 추가 정보를 보여준다.
  • -l: 긴(long) 형식으로 출력한다.
  • -u 사용자명: 특정 사용자의 프로세스만 출력한다.
  • -p PID: 특정 PID의 프로세스만 출력한다.

자주 사용되는 조합으로 ps -ef가 있는데, 이는 시스템의 모든 프로세스를 완전한 형식으로 보여준다.

BSD 계열 옵션

BSD 계열 시스템에서는 역사적인 이유로 POSIX 표준과 다른 옵션 체계를 사용한다. 대표적인 예는 ps aux이다.

  • a: 모든 사용자의 프로세스를 출력한다(터미널에 연결된 프로세스 기준).
  • u: 각 프로세스에 대해 제어 사용자 정보를 포함한 자세한 형식으로 출력한다.
  • x: 터미널에 연결되지 않은(daemon 등의) 프로세스도 포함하여 출력한다.

ps aux는 시스템의 모든 프로세스를 사용자 정보와 함께 보여주는 BSD 계열의 대표적인 사용법이다.

사용 예

$ ps
  PID TTY          TIME CMD
 7431 pts/0    00:00:00 su
 7434 pts/0    00:00:00 bash
18585 pts/0    00:00:00 ps

grep 명령어와 함께 파이프로 연결하여 특정 프로세스를 검색할 수도 있다.

$ ps -A | grep firefox-bin
11778 ?        02:40:08 firefox-bin
11779 ?        00:00:00 firefox-bin

참고 사항

ps 명령어는 유닉스 계열 운영 체제뿐만 아니라 리눅스(Linux), macOS 등에서도 동일하게 사용할 수 있다. 리눅스에서의 ps는 주로 procps-ng 패키지에 포함되어 제공되며, /proc 파일 시스템에서 프로세스 정보를 읽어 출력한다. 명령어에 대한 상세한 설명은 man ps를 통해 확인할 수 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기