| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- coreutils
- sysadmin
- 자바스크립트
- 쉘스크립트
- 사용자관리
- 리눅스명령어
- 정규표현식
- bash
- linuxcommand
- tcsh
- 명령어
- 시스템관리
- cups
- JavaScript
- shell
- php
- 파일시스템
- terminal
- 유닉스명령어
- environment
- PackageManagement
- 리눅스
- 유닉스
- Solaris
- UnixCommand
- 터미널
- Unix명령어
- js
- linux
- UNIX
Archives
- Today
- Total
ioerror
ps 사용법 및 옵션 - 현재 실행 중인 프로세스의 상태를 확인하는 명령어 본문
반응형

ps - Process Status
ps는 현재 시스템에서 실행되고 있는 프로세스의 상태를 확인하고 정보를 출력하는 명령어이다. 프로세스 ID(PID), CPU 및 메모리 점유율, 프로세스 상태, 실행 시간 등을 보여주며, 시스템 모니터링 및 프로세스 관리에 핵심적인 역할을 한다. 주로 특정 프로세스의 동작 여부를 확인하거나, 리소스를 과도하게 사용하는 프로세스를 찾아내어 강제 종료(kill)하기 전 정보를 수집할 때 사용된다.
1. 명령어 용도
- 시스템에서 실행 중인 전체 프로세스 목록을 확인하고자 할 때 사용된다.
- 특정 사용자나 특정 프로세스(예: nginx, apache 등)의 동작 여부 및 PID를 검색할 때 활용된다.
- CPU나 메모리 점유율이 높은 프로세스를 실시간이 아닌 정적 스냅샷으로 조회하여 시스템 부하 원인을 파악할 때 사용된다.
# 특정 프로세스(예: apache)가 실행 중인지 PID와 함께 검색하는 예시
$ ps -ef | grep apache
root 1234 1 0 12:00 ? 00:00:05 /usr/sbin/apache2 -k start
www-data 1235 1234 0 12:00 ? 00:00:00 /usr/sbin/apache2 -k start
2. 명령어 서식
ps 명령어는 UNIX 표준(POSIX, - 사용), BSD 표준(옵션 앞 - 생략), GNU 길이에 따른 세 가지 문법 스타일을 모두 지원하므로 서식이 다양하다.
ps [options]
3. 명령어 옵션
| 옵션 | 설명 | 사용가능 OS 및 쉘 |
| -e | 시스템의 모든 프로세스를 선택하여 표시한다. (-A와 동일) | UNIX Linux |
| -f | 친숙한 전체 포맷(full-format)으로 프로세스 정보를 상세히 보여준다. | UNIX Linux |
| a | 다른 사용자의 프로세스를 포함하여 터미널과 연관된 모든 프로세스를 표시한다. | BSD Linux |
| u | 프로세스의 소유자 정보를 포함하여 상세한 사용자 지향 포맷으로 출력한다. | BSD Linux |
| x | 터미널 제어를 받지 않는 프로세스(데몬 프로세스 등)까지 모두 표시한다. | BSD Linux |
| -o | 출력할 열(column)을 사용자가 직접 지정한다. (사용자 정의 포맷) | UNIX Linux |
| --sort | 특정 열을 기준으로 프로세스 목록을 정렬한다. | GNU Linux |
# 1. 시스템 내의 모든 프로세스를 상세히 출력 (System V 계열 스타일)
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:00 ? 00:00:02 /sbin/init
developer 2345 2100 0 12:05 pts/0 00:00:00 bash
developer 2450 2345 0 12:10 pts/0 00:00:00 ps -ef
# UID: 프로세스를 실행한 사용자 ID
# PID: 프로세스 고유 ID
# PPID: 부모 프로세스 ID
# C: CPU 사용량 백분율 (CPU utilization)
# STIME: 프로세스가 시작된 시간
# TTY: 프로세스가 연결된 터미널 라인 (?는 터미널이 없는 데몬 프로세스)
# TIME: 프로세스가 사용한 총 CPU 시간
# CMD: 실행된 명령어 및 인자
# 2. 모든 사용자의 프로세스를 터미널 제어 여부와 상관없이 상세 출력 (BSD 스타일)
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19112 4124 ? Ss 12:00 0:02 /sbin/init
developer 2345 0.1 0.2 22456 6120 pts/0 Ss 12:05 0:00 bash
# USER: 프로세스 소유자 계정명
# %CPU, %MEM: CPU 및 물리 메모리 사용률
# VSZ, RSS: 가상 메모리 크기(KiB) 및 실제 물리 메모리 상주 크기(KiB)
# STAT: 프로세스 상태 정보 (S: 대기, R: 실행 중, Z: 좀비 등)
# 3. CPU 점유율이 높은 상위 3개 프로세스만 정렬하여 출력
$ ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -n 4
PID PPID CMD %CPU %MEM
3120 2345 /usr/bin/python3 heavy.py 45.2 8.5
1234 1 /usr/sbin/apache2 -k start 1.2 2.1
2345 2100 bash 0.1 0.2
# -eo: 출력할 칼럼을 pid, ppid, cmd, %cpu, %mem 순서로 제한 지정함
# --sort=-%cpu: CPU 점유율을 기준으로 내림차순(-) 정렬하여 가장 부하가 큰 프로세스를 상단에 배치함
4. 명령어 특이사항(유의사항)
- 옵션 대시(-) 유무에 따른 차이: ps aux와 ps -aux는 서로 다르게 동작한다. ps aux는 BSD 스타일로 모든 프로세스를 상세하게 출력하지만, ps -aux는 POSIX 스타일로 -a, -u, -x 옵션이 결합한 형태로 간주되어 특정 사용자 이름이 ux인 사용자의 프로세스를 찾는 등 예측하지 못한 결과를 초래할 수 있으므로 주의해야 한다.
- 프로세스 상태 코드(STAT) 분석: STAT 열에 표시되는 문자는 프로세스의 현재 물리적 상태를 나타낸다. 대표적으로 R은 실행 중(Running), S는 인터럽트 가능한 대기 상태(Sleeping), D는 디스크 I/O 등으로 인해 인터럽트가 불가능한 대기 상태(Uninterruptible sleep), Z는 자식 프로세스가 종료되었으나 부모가 자원을 회수하지 않은 좀비 상태(Zombie)를 의미한다. 좀비 프로세스는 kill -9로 직접 종료할 수 없으며 부모 프로세스를 종료하거나 재시작해야 사라진다.
- 실시간 모니터링의 한계: ps 명령어는 명령이 실행되는 순간의 일회성 스냅샷만 제공한다. 만약 CPU나 메모리 점유율을 실시간으로 지속하여 모니터링하고자 한다면 ps 대신 top 또는 htop 명령어를 사용하는 것이 적합하다.
관련 명령어들
- top: 시스템 프로세스 및 자원 사용 상황을 실시간으로 화면에 출력하고 모니터링한다.
- kill: 특정 PID를 지정하여 프로세스에 시그널을 보내 종료하거나 제어한다.
- pgrep: 프로세스의 이름이나 조건에 매칭되는 프로세스 ID(PID)를 찾아 출력한다.
https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference
UNIX & Linux Command Reference
유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하
ioerror.tistory.com
반응형
'OS' 카테고리의 다른 글
| pw - 지정한 사용자의 비밀번호 또는 패스워드 에이징 정보를 변경 및 관리 (0) | 2026.07.16 |
|---|---|
| pushd 사용법 및 옵션 - 현재 디렉터리를 디렉터리 스택에 저장하고 새로운 디렉터리로 이동하는 명령어 (0) | 2026.07.16 |
| printenv 사용법 및 옵션 - 환경 변수의 값을 출력하거나 전체 환경 변수 목록을 조회하는 명령어 (0) | 2026.07.16 |
| popd 사용법 및 옵션 - 디렉터리 스택에서 최상단 디렉터리를 제거하고 이동하는 명령어 (0) | 2026.07.16 |
| pkginfo 명령어 사용법 및 옵션 - 시스템에 설치된 소프트웨어 패키지의 정보를 조회하는 명령어 (0) | 2026.07.05 |
Comments