Ps
ps(Processor Status)는 현재 실행되고 있는 프로세스의 상태를 보여주는 명령어이다.
Process State Codes
Commandline options
자주 사용하는 옵션 목록은 아래와 같다.
-
-e
: 모든 프로세스를 표시. -
-f
: 전체경로로 프로세스를 표시. -
-l
: 긴포멧으로 출력. -
-u
: 실행한 유저와 실행 시간을 표시. -
-j
: "job"형식으로 표시. -
-s
: signal 포멧으로 표시. -
-m
: 메모리 정보 표시. -
-a
: 다른 유저의 프로세스 현황 표시. -
-x
: 터미널 제어 없이 프로세스 현황 보기. -
-w
: 프로세스에 대한 설명을 자세하게 표시. -
-o
: User-defined format.
보는 방법
출력되는 정보의 종류와 그 의미는 아래와 같다.
-
PID
: 프로세스 아이디 -
TTY
: 프로세스와 연결된 터미널 포트 -
TIME
: 프로세스에서 사용한 CPU시간 -
CMD
: 명령어
아래는 -u
옵션을 사용할 경우 나타나는 정보이다.
-
USER
: 프로세스 사용자 -
%CPU
: CPU 사용 비율 -
%MEM
: 메모리 사용 비율 -
VSZ
: 가상 메모리 사용량 -
RSS
: 실제 메모리 사용량 -
STAT
: 현재 프로세스의 상태-
R
: 실행중 혹은 실행할수 있는 상태 -
S
: 수면 상태 -
I
: 휴식상태 -
T
: 정지상태 -
Z
: 좀비 프로세스 -
W
: 스왑 아웃된 상태 -
P
: 페이지 대기 -
D
: 디스크 대기 -
N
: nice로 실행 우선순위가 낮아진 상태
-
START
: 프로세스가 시작된 시각 혹은 날짜 아래는 -l
옵션을 사용할 경우 나타나는 정보이다.
-
F
: 프로세스와 관련된 플래그 -
S
: 프로세스 상태 (위의 STAT필드와 동일) -
PPID
: 부모 프로세스의 PID -
C
: 단기간 CPU사용률 -
PRI
: 실제 실행 우선순위 -
NI
: 프로세스의 nice 수치 -
WCHAN
: 프로세스가 기다리고 있는 이벤트
Example
-
ps -ef | grep httpd
- e(모든 프로세스 표시), f(전체경로 포함) 옵션을 추가한 httpd(Apache HTTPD)를 찾는다.
-
ps -eo state,uid,pid,ppid,rtprio,time,comm
- 사용자 설정 포멧으로 출력. 참고로 RTPRIO값은 실시간 우선순위 값으로 0 ~ 99 범위를 갖는다. '-'는 실시간 프로세스가 아님을 뜻한다.
-
ps elf
- 전체경로 포함하여 모든 프로세스를 긴 포맷으로 표시한다.
-
ps aux
- 실행한 유저와 실행 시간을 표시, 다른 유저의 프로세스 현황 표시, 터미널 제어 없이 프로세스 현황 보기.
=== 메모리 사용량 == Resident set size (RSS; 물리 메모리를 실제 점유하고 있는 크기) 확인 방법 목록
- 간단한 확인 방법
-
ps -ef --sort -rss
- 상위 10개의 프로세스 메모리 사용량
-
ps -ef --sort -rss | head -n 11
- 메모리 사용량 표시
-
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11
- 프로세스 수행명령에서 인수부분을 표시하지 않기
-
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss | head -n 11
사용률 계산 방법:
- 명목메모리 사용률:
used / total = ( total - free ) / total
- 실질메모리 사용률:
used2 / total = ( total - free2 ) / total = ( total - free - buffers - cached) / total
See also
- top
- htop
- ctop
- Resource usage
- eDEX-UI
- bashtop
- procs - replacement for ps written in Rust.
- kill - 프로세스ID를 사용하여 특정 프로세스에 시그널을 보낼 수 있다.
- skill - USER 이름을 사용하여 특정 프로세스에 시그널을 보낼 수 있다.
- pkill - 프로세스이름을 사용하여 특정 프로세스에 시그널을 보낼 수 있다.
- Cache
- ProcMon-for-Linux - Windows 용 Sysinternals 도구 모음의 고전적인 Procmon 도구를 Linux로 재구성 한 것입니다.
- magic-trace
- Sampler - 쉘 커맨드 실행, 시각화 및 알림 도구
Favorite site
- ps / kill, pkill, skill 명령어
- 프로세스별 메모리 사용량 분석
- Stackoverflow - Viewing full output of PS command
- Linux PS 명령어에 대한 정리
- ps - Linux Command
- 리눅스 ps 명령어 사용법
References
-
BASH_shell-script.pdf ↩