개요
ps(process status)는 유닉스 계열 운영체제에서 현재 실행 중인 프로세스들의 정보를 조회하기 위한 표준 명령어이다. 프로세스 ID(PID), 부모 프로세스 ID(PPID), 실행 상태, CPU·메모리 사용량, 실행 시간, 사용자명 등 다양한 속성을 한눈에 볼 수 있다. ps는 시스템 관리, 디버깅, 성능 분석 등에 필수적인 도구이며, 대부분의 POSIX 호환 쉘에서 기본 제공된다.
역사
- 1970년대 초: 최초의
ps유틸리티는 AT&T UNIX Version 7에 포함돼 있었으며, 단순히 현재 터미널에 연결된 프로세스 목록만을 보여주었다. - 1980년대: BSD 계열은
ps에 포맷 지정 옵션(-o)과 전체 시스템 프로세스 표시(-A) 등을 추가해 기능을 확대하였다. - 1990년대 이후: GNU 프로젝트는
procps패키지를 통해 리눅스에서 사용되는ps구현을 제공했으며, 이후procps-ng로 발전하였다. 현재ps는 POSIX 표준에 정의된 최소한의 옵션을 포함하면서도 각 구현체마다 추가 옵션을 제공한다.
기본 사용법
ps [options]
옵션을 지정하지 않으면 현재 터미널에 연결된 프로세스만 출력한다.
예시
ps: 현재 셸과 그 자식 프로세스만 표시ps -e또는ps -A: 시스템 전체 프로세스를 표시ps -u 사용자명: 지정된 사용자의 프로세스만 표시
주요 옵션
| 옵션 | 의미 | 비고 |
|---|---|---|
-e, -A |
모든 프로세스 표시 | |
-u <user> |
사용자별 필터링 | -U는 실효 사용자, -u는 실제 사용자 |
-f |
풀 포맷 (PPID, UID, C, STIME, CMD 등) | |
-l |
긴 포맷 (PRI, NI, SZ, RSS 등) | |
-j |
작업 제어 포맷 (PGID, SID 등) | |
-o <format> |
출력 형식 지정 (예: pid,ppid,comm) |
콤마 구분, = 로 별명 지정 가능 |
-p <pid> |
특정 PID만 표시 | 복수 PID는 콤마 혹은 스페이스로 구분 |
-C <cmd> |
명령어 이름으로 필터링 | |
-H |
트리 구조(계층)로 표시 | --forest와 동일 |
-r |
실행 중인(Running) 프로세스 먼저 정렬 | |
-S |
메모리 사용량 순 정렬 | |
--sort <key> |
지정 키로 정렬 (예: --sort=-%cpu) |
- 부호는 내림차순 |
출력 형식
ps는 기본적으로 다음과 같은 컬럼을 제공한다.
| 컬럼 | 설명 |
|---|---|
| PID | Process ID |
| TTY | 터미널(또는 ? for non‑terminal) |
| TIME | 누적 CPU 사용 시간 |
| CMD | 실행 명령(전체 경로 또는 인자 포함) |
-f 옵션을 사용하면 UID, PPID, C(CPU 사용 비율), STIME(시작 시간) 등을 추가한다. -o 옵션을 통해 사용자는 원하는 컬럼만 선택하고, 별명을 지정할 수 있다.
확장 기능 및 구현체 차이
- procps / procps-ng(Linux) :
/proc파일시스템을 직접 읽어 구현.ps -eo등 복합 옵션 지원이 풍부. - BSD ps :
kvm인터페이스를 사용하며,-J(jobs) 같은 BSD 고유 옵션이 있다. - Solaris ps :
-x옵션을 기본으로 제공해 세션 리더가 아닌 프로세스도 표시.
각 구현체는 POSIX 표준 외에 고유 옵션을 제공하므로, 스크립트 이식성을 위해서는 최소한 POSIX 옵션(-e, -f, -o) 사용을 권장한다.
관련 명령
top,htop: 실시간 프로세스 모니터링kill,pkill,killall: 프로세스 종료nice,renice: 프로세스 우선순위 조정pstree: 트리 형태로 프로세스 계층 구조 시각화
활용 예시
- CPU 사용량 상위 5개 프로세스 확인
ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6 - 특정 사용자의 메모리 사용량 정렬
ps -u alice -o pid,comm,%mem --sort=-%mem - 프로세스 트리 보기
ps -ef --forest | grep nginx
참고 문헌
- POSIX.1-2017 –
ps명령어 표준 정의. - procps-ng 매뉴얼 페이지 –
man ps(Linux). - The Unix Programming Environment, Brian W. Kernighan, Rob Pike, 1984.
- FreeBSD Handbook –
ps섹션.