ps commanの使い方

ps commandは、システムで稼働中のプロセスに関しての情報を出力するコマンドです。

色々な表示形式

オプション無での表示

オプション無しでps commandを実行した場合、制御端末を持つ自分 (あなた) のプロセスの情報を表示します。

# ps
  PID TT   STAT      TIME COMMAND
16314 p0  Is      0:00.13 bash 
19531 p0  I       0:31.27 xemacs index.html (xemacs-21.4.15)
24936 p0  R+      0:00.00 ps 
25587 C0  Is      0:00.22 -bash (bash)
      

制御端末のないプロセスの情報の表示

オプション無しの場合、制御端末のないプロセスは表示しませんが、x"オプションを付けて実行すると、制御端末のないプロセスも表示します。

# ps x
  PID TT   STAT      TIME COMMAND
23365 ??  ZW      0:00.00 (xsetroot)
20026 ??  Is      0:01.07 sawfish 
 4222 ??  I       0:00.35 kterm 
16314 p0  Is      0:00.17 bash 
19531 p0  I       0:48.14 xemacs index.html (xemacs-21.4.15)
12835 p0  R+      0:00.00 ps -x 
25587 C0  Is      0:00.22 -bash (bash)
      

全てのプロセス情報の表示

aオプションを付けて実行すると、自分のプロセスに加え自分以外のプロセスの情報も同様に表示します。

# ps a
  PID TT   STAT      TIME COMMAND
17740 p0- I       0:00.53 kterm 
24168 p0  Is      0:00.09 bash 
 4611 p0  R+      0:00.00 ps -a 
28753 p1  Is      0:00.18 bash 
       ........
23710 C1  Is      0:00.14 -sh (sh)
29705 C1  I+      0:33.77 cvsup /mnt/cvsroot/OpenBSD/cvsup/cvs 
22194 C2  Is+     0:00.01 /usr/libexec/getty Pc ttyC2 
 6629 C3  Is+     0:00.01 /usr/libexec/getty Pc ttyC3 
 8302 C5  Is+     0:00.01 /usr/libexec/getty Pc ttyC5 
      

ただし、aオプションだけでは、制御端末のあるプロセスだけしか表示されませんので、完全に全てのプロセスを表示させる場合は、xオプションを追加して実行させます。

# ps ax
  PID TT   STAT      TIME COMMAND
    1 ??  Is      0:00.03 /sbin/init 
19362 ??  Is      0:00.20 syslogd: [priv] (syslogd)
21029 ??  Is      0:00.02 pflogd: [priv] (pflogd)
14942 ??  I       1:22.31 pflogd: [running] -s 116 -f /var/log/pflog (pflogd)
16402 ??  Is      0:00.00 named: [priv] (named)
31294 ??  I       1:48.96 named 
27082 ??  Is      1:05.24 httpd: parent (httpd)
 2068 ??  Is      0:04.22 inetd 
       ........
22007 C0- I       0:00.00 /usr/local/bin/jserver 
25587 C0  Is+     0:00.26 -bash (bash)
23710 C1  Is      0:00.14 -sh (sh)
29705 C1  I+      0:38.03 cvsup /mnt/cvsroot/OpenBSD/cvsup/cvs 
22194 C2  Is+     0:00.01 /usr/libexec/getty Pc ttyC2 
 6629 C3  Is+     0:00.01 /usr/libexec/getty Pc ttyC3 
 8302 C5  Is+     0:00.01 /usr/libexec/getty Pc ttyC5 
      

もう少し詳細な表示 その1

uオプションを付けて実行すると、user, pid, %cpu, %mem,vsz, rss, tt, state, start, time, commandのキーワードに関する情報が表示されます。

# ps u
USER       PID %CPU %MEM   VSZ   RSS TT   STAT STARTED       TIME COMMAND
test     16084  2.9  3.8 13360 14716 p1  S      4:05PM    0:19.38 xemacs ps.htm
test     17740  0.0  0.6   604  2536 p0- S      3:54PM    0:00.24 kterm 
test     24168  0.0  0.3   684  1240 p0  Ss     4:07PM    0:00.05 bash 
test     14934  0.0  0.0   300   172 p0  R+     4:10PM    0:00.00 ps -ux 
test     28753  0.0  0.3   676  1288 p1  Is+    3:54PM    0:00.10 bash 
test     32750  0.0  0.6   556  2512 p1  S      4:07PM    0:00.09 kterm 
test     25587  0.0  0.3   716  1340 C0  Is+    9Aug04    0:00.26 -bash (bash)
      

もう少し詳細な表示 その2

vオプションを付けて実行すると、pid, state, time, sl, re,pagein, vsz, rss, lim, tsiz, %cpu, %mem, commandのキーワードに関する情報が表示されます。

# ps v
  PID  STAT      TIME  SL  RE PAGEIN   VSZ   RSS   LIM TSIZ %CPU %MEM COMMAND
16084 I       0:28.91   0 127      1 13360 14744 357300 1340  2.1  3.8 xemacs ps
25587 Is+     0:00.26 127 127      1   716  1340 357300  452  0.0  0.3 -bash (ba
24168 Is+     0:00.05 127 127      0   684  1240 357300  452  0.0  0.3 bash 
28753 Ss      0:00.12   0 127      0   676  1288 357300  452  0.0  0.3 bash 
17740 S       0:00.30   0 127     75   608  2540 357300  108  0.0  0.7 kterm 
32750 S       0:00.11   3 127      0   556  2520 357300  108  0.0  0.6 kterm 
18279 R+      0:00.00   0   0      0   292   172 357300  164  0.0  0.0 ps -v 
      

もう少し詳細な表示 その3

jオプションを付けて実行すると、user, pid, ppid, pgid,jobc, state, tt, time, commandのキーワードに関する情報が表示されます。

# ps j
USER       PID  PPID  PGID   SESS JOBC  STAT TT       TIME COMMAND
test     17740     1 17740 e7a1c510    0 I     p0-   0:00.55 kterm 
test     24168 32750 24168 e7a1c570    0 Is+   p0    0:00.12 bash 
test     28753 17740 28753 e7a1c4b0    0 Is    p1    0:00.19 bash 
test     16084 28753 16084 e7a1c4b0    1 I     p1    2:05.06 xemacs ps.html
test     32750 28753 32750 e7a1c4b0    1 I     p1    0:01.11 kterm 
test     13218 28753 13218 e7a1c4b0    1 R+    p1    0:00.00 ps -j 
test     25587     1 25587 e7a1c3c0    0 Is+   C0    0:00.26 -bash (bash)
      

表示されるキーワード

PID,PPID,PGID

unixのプロセスには、固有のIDやグループ化されたID等が割り付けられています。

STAT

このキーワードは現在のプロセスの状態を表す。プロセスの状態は複数の文字で表されていて、最初の文字は下記の状態を表します。

プロセス状態の意味
文字状態
Dプロセスはディスク(あるいは他の割り込み不可能な短期間の)待ち状態です。
Iプロセスは idle状態 (20 秒以上 sleep している)
Rプロセスは 実行状態です
Sプロセスは 20 秒未満の sleep状態
Tプロセスは stop している状態
Zプロセスは死んでいる状態 (ゾンビ)

それ以降の文字列は、下記の状態を表します。

文字状態
Wプロセスはスワップアウトされている
>プロセスはメモリ要求に対するソフトリミットが指定されている

VSZ,RSS

VSZは、仮想記憶上のメモリ使用量(Kbyte)を表します。RSSは物理メモリ上の常駐サイズ(Kbyte)を表します。

%cpu,%mem

%cpuは過去1分間のCPUに対する使用率を表します。%memは過去1分間のメモリに対する使用率を表します。

PRI,NI

PRIは、 スケジューリング優先度を表し、この数字が小さいほどスケジューリング優先度が高くなります。NIは現在のnice値を表します。

flags(F)

flagsは、 16進数の論理和で表してあり、プロセスの状態が示されている。この情報は、Oオプションを使用して明示的に指定してやらないと表示されない。

# ps -O flags
  PID       F TT   STAT      TIME COMMAND
30733    4086 p0  Is+     0:00.18 -bash (bash)
 9258   44186 p0  I       0:00.59 kterm 
 6968    4086 p0  I       1:05.26 xemacs ps.html (xemacs-21.4.15)
32530    4086 p1  Is      0:00.14 bash 
12322    4006 p1  R+      0:00.00 ps -O flags 
      

Fのキーワードがflagsの値を示しており、この値はシステム固有のとなります。

wchan,nwchan

wchanは、プロセスがイベント待でwaitしている時、どのイベントを待っているかがシンボル名で表示されます。

これは、waitした時のシステム内のアドレスがシンボル名に変換されて出力されます。数字で表示される時には、アドレスの最初の部分は削られてその結果が 16 進で表示されます。例えば 0x80324000 では 324000 と表示されます。

nwchanは、wchanのアドレス表示となります。これは、Oオプションで指定してあげないと表示されません。

# ps l -O nwhan
  UID   PID  PPID CPU PRI NI   VSZ   RSS WCHAN   STAT TT       TIME COMMAND           WCHAN
 1000 30733 19605   0  10 20   708  1328 wait   Is    p0    0:00.23 -bash (bash)     e7a24dc4
 1000  6968 30733   2   2 20 13576 15168 poll   I     p0    2:00.84 xemacs ps.html ( d03b5268
 1000  9059 30733   0   2 20  1128  3092 select I     p0    0:00.71 kterm            d03b5268
 1000 22401 30733   0  10 20    84   492 wait   I+    p0    0:00.01 man ps           e7c7b8d4
 1000  7540 22401   0  18 20   364   292 pause  I+    p0    0:00.00 sh -c sh         e7c9887c
 1000 17607  7540   0   3 20   212   820 ttyin  I+    p0    0:00.04 /usr/local/bin/j d0b59108
 1000 32072  9059   0  10 20   684  1296 wait   Is    p1    0:00.21 bash             e7c7b654
 1000  7794 32072   0  28 20   304   172 -      R+    p1    0:00.00 ps -l -O nwchan       0
      
Last modified: Mon Jan 21 16:39:59 2008 JST