コマンドリファレンス - プロセスの状態の表示 ps

 
1. 前置き
2. FreeBSD での動作

1. 前置き

 このコマンドは方言がひどくてややこしいのですが、CentOS のマニュアルに解説が出ていました。  まんま載せますと
ps が受け付けるオプションにはいくつかの種類がある。
1   UNIX オプション。まとめることが可能で、前にはダッシュを置かなければならない。
2   BSD オプション。まとめることが可能で、ダッシュを使ってはならない。
3   GNU ロングオプション。前に二つのダッシュを置く。

別々の種類のオプションは自由に混在させてよいが、衝突が起こるかもしれない。機能的には全く等しい、同義のオプションがいくつかある。これは多くの標準と ps 実装に対して、この ps が互換性を持っているためである。

"ps -aux" は "ps aux" とは異なることに注意すること。 POSIX と UNIX 標準では、"ps -aux" は "x" という名前のユーザーが所有する全てのプロセスを表示し、かつ -a オプションで選択される全てのプロセスを表示する。 "x" という名前のユーザーが存在しない場合、この ps は代わりに "ps aux" というコマンドとして解釈され、警告を表示する。この動作は昔のスクリプトと慣習からの移行の助けになることを意図している。これは脆くて変更される可能性があるので、これに依存すべきではない。

 だがしかし、FreeBSD ではダッシュをつけようがつけまいが、同じことを意味しています。ややこしいなぁ。

2. FreeBSD での動作


> ps [オプション]
 FreeBSD でのオプションには、以下のものがあります。
オプション 内容
-a 自分のプロセスに加え自分以外のプロセスも同様に表示します。
-u 次のキーワードに関する情報を表示します。
user, pid, %cpu, %mem vsz rss, lim, tt, state, start, time, command
-x プロセス番号を表示します
-w端末の幅の制限によりコマンドの引数が全部見えないことがあります。そういうときに右端を折り返して表示します。-ww と重ね書きすればすべての引数が見えるようになります。

  例


> ps
  PID  TT  STAT      TIME COMMAND
34111  p0  Ss     0:00.89 -tcsh (tcsh)
34214  p0  R+     0:00.01 ps
 キーワードの意味を示します。
キーワード内容
%cpucpu 使用率(別名 pcpu)
%memメモリ使用率(別名 pmem)
commandコマンド名と引数
limメモリ利用のリミット
pidプロセス ID
re実メモリ常駐時間(秒単位:127 = 無限)
rss常駐セットサイズ
slプロセス番号
start開始時刻
state記号でのプロセスの状態(別名 pstat)
timeユーザ + システムの合計 cpu 時間(別名 cputime)
tt制御端末名(2 文字の省略形)

 プロセスの状態(state)は、次の文字列で表示します。例えば、"RWNA" の最初の文字は、プロセスが runnable 状態であることを示します。

文字列状態
Dディスク(あるいは他の割り込み不可能な短期間の)待ち状態
Iidle 状態(20秒以上 sleep している)
Jjail 中のもの。jail のホスト名は /proc/>pid</status にある
Rrunnable 状態
S20秒未満の sleep 状態
Tstop 状態
Z死んでいる(ゾンビ)状態
さらにこの後に文字があれば、さらなる状態情報を表示します。
+プロセスはその制御端末のフォアグラウンドプロセスグループに属している
>CPU のスケジュール優先度が上げられている
<メモリ要求に対するソフトリミットが指定されており、現在そのリミットを超えている。このようなプロセスは(必然的に)スワップされない
Aランダムなページスワップを要求した
E終了しようとしている
L実メモリ中にロックされたページを持っている
Nプロセスはスケジューリング優先度が下げられている
SFIFO ページスワップを要求した
sセッションリーダである
Vvfork の間、一時中断されている
Wスワップアウトされている
Xトレースされているかデバッグされている