프로세스의 현재 상태를 보여주는 명령어이다.

사용법 : ps [옵션] 
전체적인 프로세스와 관련된 옵션 
-A : 모든 프로세스를 보여준다. 
-N : -A 옵션과 비슷하나, ps 명령을 위해 실행한 ps 프로세스만 제외하여 보여준다. (실행을 취소한다) 
-a : 세션 리더 및 터미널과 관련되지 않은 프로세스를 제외한 모든 프로세스를 보여준다. 
-d : 세션 리더를 제외한 모든 프로세스를 보여준다. 
-e : 커널 프로세스를 제외한 모든 프로세스를 보여준다. 
T : 현 터미널에서의 모든 프로세스를 보여준다. 
a : 한 터미널의 사용자 고유 프로세스를 보여준다. 
r : 현재 실행중인 프로세스를 보여준다. 
x : 터미널 없는 프로세스를 보여준다. 
--deselect : -N 옵션과 같다. 

특정 프로세스를 지정(선택)하여 지정한 목록만 보여주는 옵션 
-C : 지정한 명령어 이름에 관련된 정보를 보여준다. 
-G : 지정한 RGID에 관련된 정보를 보여준다. (이름도 지원) 
-U : 지정한 RUD에 관련된 정보를 보여준다. (이름도 지원) 
-g : 지정한 세션 리더 혹은 그룹 이름에 관련된 정보를 보여준다. 
-p : PID를 선택한다. 
-s : 세션에 속한 프로세스를 선택한다. 
-t : tty를 선택한다. 
-u : 사용자 ID를 지정한다 (이름도 지원) 
U : 지정한 사용자의 프로세스를 보여준다. 
p : 프로세스 ID를 선택한다. 
t : tty를 선택한다. 
--Group : 실제 그룹이름이나 ID를 선택한다. 
--User : 실제 사용자이름이나 ID를 선택한다. 
--group : 유효 그룹이름이나 ID를 선택한다. 
--pid : 프로세스 ID를 선택한다. 
--sid : 세션 ID를 선택한다. 
--tty : 터미널을 선택한다. 
--user : 유효 사용자이름이나 ID를 선택한다. 
-123 : --sid의 의미이다. 
123 : --pid의 의미이다. 

결과로써 보여지는 필드를 선택(제어)하는 옵션 
-0 : PID, TTY, STAT, TIME, COMMAND 등의 필드 목록을 보여준다. 
-c : PID, CLS, PRI, TTY ,TIME, CMD 등의 필드 목록을 보여준다. 
-f : UID, PID, PPID, C, STIME, TTY, TIME, CMD 등의 필드목록으로, CMD필드의 전체 명령어 형태를 보여준다. 
-j : PID, PGID, SID, TTY, TIME, CMD등의 필드 목록을 보여준다. 
-l : F, S, UID, PID, PPID, C, PRI, NI, ADDR, SZ, WCHAN, TTY, TIME, CMD등의 필드 목록으로, 상세한 정보를 보여준다. 
-o : 사용자 지정 형식 
-y : -l 이나 l 옵션과 함께 쓰여, ADDR 필드를 RSS필드로 보여준다. 
0 : PID, TTY, STAT, IME COMMAND 등의 필드 목록을 보여준다. 
X : PID, STACKP, ESP, EIP TMOUT, ALARM, STAT, TTY, TIME, COMMAND등의 필드 목록으로 구 리눅스 I386 레지스터 형식을 보여준다. 
j : PPID, PID, PGID, SID, TTY, TPGID, STAT, UID, TIME, COMMAND 등의 필드 목록으로 작업 제어에 관련되 형식을 보여준다. 
l : F, S, UID, PID, PPID, C, PRI, NI, ADDR, SZ, PSS, WCHAN, TTY, TIME, CMD등의 필드 목록으로, -l 옵션에 PSS 필드를 추가하여 보여준다. 
o : 사용자 지정 형식 
s : UID, PID, PENDING, BLOCKED, IGNORED, CAUGHT, STAT, TTY, TIME, COMMAND등의 필드 목록을 보여준다. 
u : USER, RID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND등의 필드 목록을 보여준다. 
v : PID, TTY, STAT, TIME, MAJFL, TRS, DRS, RSS, %MEM, COMMAND 등의 필드 목록을 보여준다. 
--format : 사용자 지정 형식 

결과로써 보여지는 필드의 내용을 변경하는 옵션 
-H : 프로세스를 계층으로 보여준다. 
-m : 쓰레드를 보여준다. 
-n : 지정한 시스템 이름 리스트 파일을 사용한다. 
-w : 필드의 너비에 맞추어 짤린 내용을 내용에 맞추어 보다 자세하게 보여준다. 
C : raw CPU 시간을 이용한다. 
N : 지정한 시스템 이름 리스트 파일을 이용한다. 
O : 정렬 순서 지정하기 위한 옵션으로 O[+|-]K[,+|-]K[,...]]의 형식으로 정력 방식을 지정한다. 여기에서 올 수 있는 k는 사용법에서 설명한다. +는 오름차순 정렬이며, -는 내림차순 정렬이다. 
S : 죽은 자식 프로세스 데이터를 포함한다. 
c : 시스템 내부에 보관된 간단한 명령 이름을 보여준다. 
e : 명령에 대한 매개 변수와 함께 환경변수도 보여준다. 
f : 아스키 아트로 프로세스 트리를 보여준다. 
h : 헤더 라인을 보여주지 않는다. 
m : 모든 쓰레드를 보여준다. 
n : WCHAN 과 USER 필드를 숫자 값으로 보여준다. 
w : 필드의 너비에 맞추어 짤린 내용을 내용에 맞추어 보다 자세하게 보여준다. 
--cols : 스크린의 너비를 설정한다. 
--columns : 스크린의 너비를 설정한다. 
--cumulative : 죽은 자식 프로세스 데이터를 포함한다. 
--forest : 아스키 아트의 프로세스 트리를 보여준다. 
--html : HTML 이스케이프로 보여준다. 
--headers : 헤더 라인을 반복한다. 
--no-headers : 헤더를 보이지 않는다. 
--lines : 스크린의 높이를 설정한다. 
--rows : 스크린의 높이를 설정한다. 
--sort : 지정한 정렬 방식으로 보여준다. 
--sor=[+|-]key[,+|-]key[,...] 형식이다. 여기서 사용할 수 있는 key는 사용법에서 설명한다. 예를 들어 ps jax --sort=uid,-ppid,+pid 형식으로 할 수 있다. 

프로그램 정보 
-V : 버전 정보를 보여준다. 
L : 모든 포맷 지시자를 보여준다. 
V : 버전 정보를 보여준다. 
--help : 도움말을 보여준다. 
--info : 디버깅 정보를 보여준다. 
--version : 버전 정보를 보여준다. 


ps 명령어는 프로세스의 현재 상태를 보여주는 명령어이다.
ps 명령으로 현재 사용하는 프로세스의 상태를 간단히 한 번 살펴 보자.

# ps 
  PID   TTY            TIME  CMD 
  3177  pts/4      00:00:00  bash 
  3599  pts/4      00:00:00  ps 

ps 명령으로 PID, TTY, TIME, CMD 헤더의 필드와 내용을 보여 준다.
그럼, 이들 필드에 대해 한 번 알아 보자.

. ADDR : 프로세스 스택의 세그먼트 번호
. BND : 커널 스레드가 바인드되는 프로세스의 논리 프로세스 번호 (-o 옵션)
. C :
. CMD : 사용자가 실행한 명령 이름
. COMMAND : 사용자가 실행한 명령 이름
. F : 프로세스 및 쓰레드에 관련된 항목
. LIM : 메모리에 대한 소프트 한계와 관련된 항목
. NI : 프로세스의 nice값, 낮을수록 CPU 시간이 높다
. PID : 프로세스 ID
. PRI : 프로세스 스케줄링 우선순위, 낮을수록 우선순위가 높다.
. RSS : 프로세스의 실제 메모리의 크기로 킬로바이트 단위
. S : 프로세스나 커널 쓰레드의 상태
. SIZE : 가상 이미지의 크기
. STAT : 실행되고 있는 프로세스의 상태

아래는 STAT 필드의 상태를 설명한 내용이다.
-D : 디스크 입출력 대기 상태로 interrupts를 걸 수 없는 상태
-R : 실행중
-S : 짧은 sleep 상태
-T : 정지상태
-Z : 좀비상태
-W : 상주한 페이지가 없는 프로세스
-< : 높은 우선권 프로세스
-N : 낮은 우선권 프로세스
-L : 페이지가 락이 걸린 상태

. STIME : 프로세스의 시작시간
. SZ : 프로세스가 사용하는 자료와 스택의 크기
. TIME : 프로세스가 소비한 총 시간
. TRS : 텍스트의 실제 메모리 크기
. TTY : 연결되어 있는 터미널
. UID : 사용자 ID
. USER : 사용자 이름
. WCHAN : 프로세스에 거주하는 커널함수
. VSZ : 가상 메모리에 적재된 프로세스의 KB단위 크기
. %CPU : 마지막 1분 동안 프로세스가 사용한 CPU 점유율
. %MEM : 마지막 1분 동안 프로세스가 사용한 메모리의 점유율
-u 옵션으로 사용자의 ID나 이름을 지정하여 지정한 사용자의 프로세스만을 살펴 볼수 있다.

# ps -u apache -l 
  F S   UID   PID  PPID  C PRI  NI ADDR    SZ WCHAN  TTY          TIME CMD 
140 S    48 10392 10605  0  69   0    - 20732 semtim ?        00:00:10 httpd 
140 S    48 10597 10605  0  69   0    - 20242 semtim ?        00:00:11 httpd 
140 S    48 10599 10605  0  69   0    - 20585 semtim ?        00:00:10 httpd 
140 S    48 10600 10605  0  69   0    - 20579 semtim ?        00:00:09 httpd 
140 S    48 10601 10605  0  69   0    - 20595 semtim ?        00:00:10 httpd 
140 S    48 10602 10605  0  71   0    - 20606 semtim ?        00:00:06 httpd 
140 S    48 10603 10605  0  69   0    - 20550 do_sel ?        00:00:09 httpd 
140 S    48 10604 10605  0  69   0    - 20582 semtim ?        00:00:11 httpd 
140 S    48 10606 10605  0  69   0    - 20736 semtim ?        00:00:10 httpd 
140 S    48 10607 10605  0  69   0    - 20266 semtim ?        00:00:07 httpd 
140 S    48 10608 10605  0  69   0    - 20556 semtim ?        00:00:11 httpd 
140 S    48 10609 10605  0  69   0    - 20221 semtim ?        00:00:11 httpd 
140 S    48 10835 10605  0  69   0    - 20604 semtim ?        00:00:07 httpd 
140 S    48 11252 10605  0  69   0    - 20259 semtim ?        00:00:01 httpd 
140 S    48 11334 10605  0  69   0    - 20559 semtim ?        00:00:02 httpd 
140 S    48 11335 10605  0  69   0    - 20592 semtim ?        00:00:03 httpd 
140 S    48 11336 10605  0  74   0    - 20215 semtim ?        00:00:03 httpd 
140 S    48 11420 10605  0  69   0    - 20374 semtim ?        00:00:03 httpd 

apache 관련 프로세스 중 PID 835를 강제로 종료시키자. 여기서 -9는 행당 프로세스를 강제로 종료 시킨다.

# kill -9 835 

관련 PID 프로세스를 다시 시작할 수도 있다.

# kill -HUP 835 

또는 이런 방법을 사용할 수도 있다.

# kill -SIGHUP 835 

보통 시스템에의 모든 프로세스를 보고자 할 경우 aux 옵션의 조합을 많이 쓴다.
많은 프로세스를 어떤 기준으로 해서 정렬을 할 경우가 많이 있다. 정렬을 위해서는 O옵션이나 --sort 옵션을 사용한다. O 옵션일 경우 O[+|-]K[,+|-]K[,...]]의 형식을 사용하며, --sort옵션일 경우 --sort=[+|-]key[,+|-]key[,...]의 형식을 사용한다.
O옵션에 -r를 붙여 RSS를 가장 큰 값을 맨 위에 보여주는 내림차순으로 정렬하였다. 만일 2개 이상의 기준으로 정렬을 한다면, 콤마 후 정렬 방식과 기준되는 k필드를 지정하면 된다.

[관련 명령어]
pstree 트리 형태로 프로세스 계층도를 보여준다.
top 실시간으로 프로세스 변화 상황을 보여준다.
2005/06/17 13:14 2005/06/17 13:14

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다