tail head cat sleep
QR code linking to this page

Man page  — PS

명칭

ps – 프로세스 상태의 표시

내용

서식


ps [-aCcefhjlmrSTuvwx] [-M core] [-N system] [-O fmt] [-o fmt] [-p pid] [-t tty] [-U username]

ps [-L]

해설

ps 유틸리티는, 제어 단말을 가지는 자신 (당신)의 프로세스의 정보를, 헤더행에 이어 표시합니다. 이 정보는, 제어 단말순서에 정렬되어 그 중에서는 프로세스 ID 순서에 정렬됩니다.

표시되는 정보는, 일련의 키워드에 의해 선택됩니다 ( -L, -O, -o 옵션을 참조). 디폴트의 출력 포맷은, 각 프로세스마다, 프로세스 ID, 제어 단말·cpu 시간 (유저 시간과 시스템 시간의 양쪽 모두)· 프로세스 상태·프로세스에 관련하는 명령로부터 완성됩니다.

프로세스 파일 시스템 ( procfs(5) 참조)는, ps 하지만 실행되고 있을 때에 mount 되고 있어야 합니다. 그렇지 않은 경우, 모든 정보가 이용 가능하게 되는 것은 아닙니다.

옵션을 이하에 나타냅니다.
-a
  자신의 프로세스에 가세해 자신 이외의 프로세스의 정보도 이와 같이 표시합니다. 이 기능은, kern.ps_showallprocs sysctl 를 0 으로 설정하는 것으로 무효화할 수 있습니다.
-c
  ``명령''자리수의 출력을, 모든 커멘드 라인을 표시하는 것이 아니라, 실행 형식명만을 표시하도록(듯이) 변경합니다.
-C
  cpu 퍼센티지의 계산을,``상주''시간을 무시하는 ``생'' cpu 시간을 사용하는 방법으로 변경합니다 (통상 이것은 영향 없습니다).
-e
  환경 (변수)도 동시에 표시합니다.
-f
  스9EC6 아웃 된 프로세스에 관해서, 명령행과 환경의 정보를 표시합니다. 유저의 uid 가 0 인 경우만, 이 옵션이 유효하게 됩니다.
-h
  페이지마다 1 개(살) 헤더가 들어가도록(듯이) 합니다.
-j
  다음의 키워드에 관한 정보를 표시합니다: user, pid, ppid, pgid, sess, jobc, state, tt, time, command.
-L
  유효한 키워드의 일람을 표시합니다.
-l
  다음의 키워드에 관한 정보를 표시합니다: uid, pid, ppid, cpu, pri, nice, vsz, rss, wchan, state, tt, time, command.
-M
  이름 리스트의 값을 꺼낼 때, 디폴트의 /dev/kmem 대신에, 지정했다 core (으)로부터 꺼냅니다.
-m
  프로세스 ID 순서가 아니고, 메모리 사용량순서에 정렬합니다.
-N
  디폴트의 /kernel 대신에, 지정되었다 system (으)로부터 이름 리스트를 꺼냅니다.
-O
  디폴트로 표시되는 정보에 가세해 지정된 키워드에 관한 정보를, 프로세스 ID 의 후에 삽입하는 형식에서 표시합니다. 각 키워드의 뒤에는, 등호 (``='')와 캐릭터 라인을 추가해도 상관하지 않습니다. 이 경우, 표준의 헤더 대신에 지정된 캐릭터 라인이 표시됩니다.
-o
  지정된 키워드에 관한 정보를, 표시합니다. 각 키워드의 뒤에는, 등호(``='')와 캐릭터 라인을 추가해도 상관하지 않습니다. 이 경우, 표준의 헤더 대신에 지정된 캐릭터 라인이 표시됩니다.
-p
  지정한 프로세스 ID 에 관한 정보를 표시합니다.
-r
  프로세스 ID 순서가 아니고, 현재의 cpu 이용율 순서에 정렬합니다.
-S
  프로세스 시간을 계산하는데, 종료한 child process의 시간을 parent process에 합계하도록(듯이) 변경합니다.
-T
  표준 입력의 디바이스에 장착된 프로세스의 정보를 표시합니다.
-t
  지정된 단말 디바이스에 장착된 프로세스의 정보를 표시합니다.
-U
  지정되었다 username 에 속하는 프로세스를 표시합니다.
-u
  다음의 키워드에 관한 정보를 표시합니다: user, pid, %cpu, %mem, vsz, rss, tt, state, start, time, command. -u 옵션을 지정하면(자) -r 옵션도 은근히 지정한 것이 됩니다.
-v
  다음의 키워드에 관한 정보를 표시합니다: pid, state, time, sl, re, pagein, vsz, rss, lim, tsiz, %cpu, %mem, command. -v 옵션을 지정하면(자) -m 옵션도 은근히 지정한 것이 됩니다.
-w
  디폴트의 현행 윈도우폭이 아니고, 132 자리수폭으로 표시합니다. 한 번보다 많이 -w 옵션을 지정하면(자), ps (은)는 윈도우폭에 관계없이, 필요한 만큼의 폭을 사용합니다.
-x
  제어 단말이 없는 프로세스의 정보도 표시합니다.

유효한 키워드의 전리스트를 이하에 나타냅니다. 몇개의 키워드에 관해서는 한층 더 자세하게 말합니다.
%cpu 프로세스의 cpu 이용율입니다. 실시간으로 최근 1 분간의 감쇠 평균입니다. 계산의 기점이 되는 시간은 변화하므로 (프로세스는 아직 태어났을 뿐인가도 모르기 때문에), %CPU 필드 전부의 합계는 100% 를 넘을 가능성도 있습니다.
%mem 프로세스로 사용되고 있는 열매 메모리의 퍼센티지입니다.
flags 인클루드 파일 < sys/proc.h> 그리고 프로세스에 정의된 플래그입니다.
P_ADVLOCK 0x00001 프로세스는 POSIX 제안 락을 보관 유지하고 있다
P_CONTROLT 0x00002 제어 단말을 가지고 있다
P_INMEM 0x00004 Ta 메모리에 읽히고 있다
P_NOCLDSTOP 0x00008 child process가 정지해도 SIGCHLD 를 보내지 않는다
P_PPWAIT 0x00010 parent process가, child process가 exec/exit 하는 것을 기다리고 있다
P_PROFIL 0x00020 프로파일 첨부로 실행되었다
P_SELECT 0x00040 select 중; wakeup/waiting 는 위험하다
P_SINTR 0x00080 Ta sleep 는 끼어들어 가능
P_SUGID 0x00100 Ta 마지막 실행 이래, id 특권이 설정되어 있다
P_SYSTEM 0x00200 시스템 프로세스: 시그널이나 stat 나 스왑이 없다
P_TIMEOUT 0x00400 sleep 중에 타임 아웃 했다
P_TRACED 0x00800 디버그 프로세스는 트레이스 되고 있다
P_WAITED 0x01000 디버그 프로세스는 child process를 기다리고 있다
P_WEXIT 0x02000 Ta 종료 동작중
P_EXEC 0x04000 Ta 프로세스는 exec 로 불렸다
P_OWEUPC 0x20000 차의 ast 프로세스가 addupc() 호출의 빌린 것
P_SWAPPING 0x40000 프로세스는 스왑 되고 있다
lim setrlimit(2) 의 호출로 지정되는, 메모리 사용량의 소프트 제한입니다.
lstart
  명령의 실행이 시작된 정확한 시각을, strftime(3) 에 기술된 ``%c''포맷으로 표시합니다.
nice 프로세스 스케줄링에 있어서의 증가치입니다 (setpriority(2) 참조).
rss 프로세스의 열매 메모리(상주분 )의 크기(1024바이트 단위)입니다.
start 명령이 개시된 시간입니다. 명령이 개시되었던 것이 24 시간 이내라면, 개시시각은 strftime(3) 그리고 기술된 ``%l:ps. 1p''포맷으로 표시됩니다. 명령이 개시되었던 것이 7 일 이내라면, 개시시각은 ``%a6. 15p''포맷으로 표시됩니다. 아니면, 개시시각은 ``%e%b%y''포맷으로 표시됩니다.
state 프로세스 상태를 캐릭터의 열로 표시합니다. 예를 들면, " RWNA" 의 최초의 캐릭터는, 프로세스가 runnable 상태인 것을 나타내고 있습니다.

D 프로세스는 디스크 (혹은 다른 끼어들어 불가능한 단기간의) 대기 상태입니다.
I 프로세스는 idle 상태 (20 초 이상 sleep 하고 있다)입니다.
J 프로세스는 jail(2) 안의 것입니다. 감옥의 호스트명은 ‘/proc/<pid>/status’ 에 기술되고 있습니다.
R 프로세스는 runnable 상태입니다.
S 프로세스는 20 초 미만의 sleep 상태입니다.
T 프로세스는 stop 하고 있는 상태입니다.
Z 프로세스는 죽어 있는 상태 (``좀비'')입니다.

한층 더 이 후에 캐릭터가 있으면, 새로운 상태 정보를 나타냅니다.

+ 프로세스는 그 제어 단말의 foreground 프로세스 그룹에 속하고 있습니다.
< 프로세스는 CPU 의 스케줄 우선도가 거론되고 있습니다.
> 프로세스는 메모리 요구에 대한 소프트 제한이 지정되어 있어 현재 그 제한을 넘고 있습니다. 이러한 프로세스는 (필연적으로) 스왑 되고 있지 않습니다.
A 프로세스는 랜덤인 페이지 치환 ( madvise(2) 에 있어서의 MADV_RANDOM (으)로, 예를 들면, lisp(1) 에서의 쓰레기 콜렉션)을 요구했습니다.
E 프로세스는 종료하려고 하고 있습니다.
L 프로세스는 열매 메모리중에 locked page (예를 들면, raw I/O 용무)를 가지고 있습니다.
N 프로세스는 CPU 스케줄링 우선도 ( setpriority(2) 참조)가 내릴 수 있고 있습니다.
S 프로세스는 FIFO 페이지 치환 ( madvise(2) 에 있어서의 MADV_SEQUENTIAL (으)로, 예를 들면, 가상기억의 다량의 데이터를 차례차례 액세스 한다 대규모 화상 처리 프로그램)을 요구했습니다.
s 프로세스는 세션 리더입니다.
V 프로세스는 vfork(2) 의 사이, 일시 중단되고 있습니다.
W 프로세스는 스9EC6 아웃 되고 있습니다.
X 프로세스는 트레이스 되고 있는지, 디버그 되고 있습니다.
tt 만약 있으면, 제어 단말의 패스명의 생략형입니다. 생략형은 /dev/tty 에 계속되는 3 캐릭터인가, 콘솔 경우의 ``con''입니다. 이미 프로세스가 그 제어 단말에 도달할 수 없는 (즉, revoke 될) 경우, 후에 ``-''가 붙습니다.
wchan 프로세스가 기다리고 있는 이벤트 (시스템내의 주소). 숫자로 표시될 때에는, 주소의 최초의 부분은 깎아져 그 결과가 16 진으로 표시됩니다. 예를 들면 0x80324000 에서는 324000 으로 표시됩니다.

키워드 command 에는, 벌써 종료하고 있는데 부모가 아직 wait 해 주지 않았다 프로세스(즉 좀비)는 ``<defunct>''라고 표시됩니다. 종료하려고 해 블록 되고 있는 프로세스는 ``<exiting>''라고 표시됩니다. ps 유틸리티는, 메모리나 스왑 area를 검사해, 프로세스가 생성되었을 때의 파일명이나 인수를 추측합니다. 이 방법은, 본질적으로 조금 신뢰할 수 있는 것이 아니고, 프로세스는 어쨌든 이 정보를 파괴할 수가 있습니다. 그러니까, 표시되는 명령명이나 인수를 너무 그다지 신용해 되지 않습니다. 한편, 키워드 ucomm (어카운팅명)는 신용할 수 있습니다.

키워드

이하는 유효한 키워드와 그 의미의 전리스트입니다. 그 중 몇개인가는 별명이 있습니다.

%cpu cpu 사용율 (별명 pcpu)
%mem 메모리 사용율 (별명 pmem)
acflag 어카운팅 플래그 (별명 acflg)
command 명령명과 인수
cpu 단기간 cpu 사용 계수 (스케줄링용)
flags 16 진수의 프로세스 플래그 (별명 f)
inblk 총블록 읽기수 (별명 inblock)
jobc 작업 컨트롤수
ktrace 트레이스중 플래그
ktracep 트레이스중의 vnode
lim 메모리 이용의 제한
logname 프로세스를 개시한 유저의 로그인명
lstart 개시시각
majflt 총페이지 폴트수
minflt 총페이지 재생수
msgrcv 총메세지 수신수 (파이프/소켓으로부터의 읽기)
msgsnd 총메세지 송신수 (파이프/소켓에의 기입해)
nice nice 치 (별명 ni)
nivcsw 총강제적 문맥 스위치수
nsigs 총시그널 수락수 (별명 nsignals)
nswap 총스9EC6 인/스9EC6 아웃수
nvcsw 총자발적 문맥 스위치수
nwchan wait 채널 (주소로 표시)
oublk 총블록 기입수 (별명 oublock)
p_ru 리소스 이용량 (좀비 에 대해서만 유효)
paddr 스왑 주소
pagein 페이지 인수 (majflt 와 같다)
pgid 프로세스 그룹 번호
pid 프로세스 ID
poip 진행중의 페이지 아웃수
ppid parent process ID
pri 스케줄링 우선도
re 열매 메모리 상주 시간 (초단위; 127 = 무한)
rgid 열매 그룹 ID
rlink run 행렬에 있어서의 역링크 (혹은 0)
rss 상주 세트 사이즈
rsz 상주 세트 사이즈 + (텍스트의 사이즈/텍스트의 이용 총수) (별명 rssize)
rtprio 실시간 우선도 (101 = 실시간 프로세스는 아니다)
ruid 열매 유저 ID
ruser 유저명 (ruid 로부터 얻을 수 있던 것)
sess 세션 포인터
sig 지연 된 시그널 (별명 pending)
sigcatch 포획 된 시그널 (별명 caught)
sigignore
  무시된 시그널 (별명 ignored)
sigmask 블록 된 시그널 (별명 blocked)
sl sleep 시간 (초단위; 127 = 무한)
start 개시시각
state 기호에서의 프로세스 상태 (별명 stat)
svgid setgid 프로그램에서의 saved gid
svuid setuid 프로그램에서의 saved uid
tdev 제어 단말의 디바이스 번호
time 유저 + 시스템의 합계 cpu 시간 (별명 cputime)
tpgid 제어 단말 프로세스 그룹 ID
tsess 제어 단말 세션 포인터
tsiz 텍스트 사이즈 (K 바이트 단위)
tt 제어 단말명 (2 캐릭터의 생략형)
tty 제어 단말의 완전한 이름
uprocp 프로세스 포인터
ucomm 어카운팅으로 사용되는 명령명
uid 실효 유저 ID
upr 시스템 콜로부터 돌아갈 때의 스케줄링 우선도 (별명 usrpri)
user 유저명 (uid 로부터 얻은 것)
vsz k 바이트 단위의 가상기억 사이즈 (별명 vsize)
wchan wait 채널 (심볼명으로 표시)
xstat 종료 스테이터스 또는 stop 스테이터스 (stop 프로세스나 좀비 프로세스때에만 유효)

관련 파일

/dev/kmem 디폴트의 카네르메모리데바이스
/var/run/dev.db /dev 이름 데이타베이스
/var/run/kvm_kernel.db
  시스템 (커널)의 이름 리스트 데이타베이스
/kernel 디폴트의 시스템의 이름 리스트
/proc procfs(5) 의 마운트 포인트

관련 항목

kill(1), w(1), kvm(3), strftime(3), procfs(5), pstat(8), sysctl(8)

버그

ps (은)는 시스템보다 빠르게 실행하지 못하고, 다른 프로세스와 같게 스케줄 되어 실행되므로, 표시되는 정보는 정확한 것은 않을 수 없습니다.

PS (1) April 18, 1994

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

… one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
— Robert Firth