Scroll to navigation

PS(1) Linux User's Manual PS(1)

名前

ps - 現在実行されているプロセスのスナップショットを表示する

書式

ps [options]

説明

ps はアクティブなプロセスのうち選択されたものの情報を表示する。 プロセスの選択や表示される情報を繰り返し更新したい場合は、 代わりに top(1) を使うこと。

このバージョンの ps が受け付けるオプションにはいくつかの種類がある。

1
UNIX オプション。まとめることが可能で、前にはダッシュを置かなければならない。
2
BSD オプション。まとめることが可能で、ダッシュを使ってはならない。
3
GNU ロングオプション。前に二つのダッシュを置く。

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

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

デフォルトでは、ps はカレントユーザーと 同じ実効 (effective) ユーザー ID (EUID) を持ち、 かつ呼び出した端末と同じ端末に関連づけられている 全てのプロセスを選択する。 この場合、プロセス ID (PID)・プロセスに関連づけられている端末 (TTY)・ [dd-]hh:mm:ss という形式の累積 CPU 時間 (TIME)・ 実行ファイル名 (CMD) が表示される。 出力はデフォルトではソートされない。

BSD 形式オプションを使うと、 デフォルトの表示にプロセス状態 (STAT) が追加され、 実行ファイル名の代わりにコマンドライン引き数 (COMMAND) が表示される。 これは PS_FORMAT 環境変数で上書きできる。 BSD 形式オプションを使った場合、 選択されるプロセスも変わり、 ユーザが所有する他の端末 (TTY) 上のプロセスも含まれるようになる。 言い換えれば、選択されるプロセスは、全てのプロセスから 他のユーザーが所有するプロセスと端末上にないプロセスを除いたものに 設定されると説明できる。 以下でオプションが「等しい ("identical")」と書かれているものについては、 これらの違いは除いて考える。 したがって、-MZ と等しく、他も同様である。

以下で記述されているものを除き、 個々のプロセス選択オプションで選択されたプロセスは足し合わされる。 デフォルトの選択は破棄され、選択されたプロセスは 表示されるプロセス群に追加される。 したがって、あるプロセスは、 指定された選択基準のどれかひとつに合致すれば、表示される。

標準的な書式を使ってシステム上の全てのプロセスを表示する:
ps -e
ps -ef
ps -eF
ps -ely
BSD 書式を使ってシステム上の全てのプロセスを表示する:
ps ax
ps axu
プロセスツリーを表示する:
ps -ejH
ps axjf
スレッドに関する情報を取得する:
ps -eLf
ps axms
セキュリティ情報を取得する:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
root (実 (real) ID と実効 ID) として実行されている全てのプロセスを
ユーザ形式で表示する: ps -U root -u root u
全てのプロセスをユーザー定義フォーマットで表示する:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan
syslogd のプロセス ID のみを表示する:
ps -C syslogd -o pid=
PID 42 の名前のみを表示する。
ps -p 42 -o comm=

簡易プロセス選択

-A
全てのプロセスを選択する。-e と等しい。
-N
指定された条件を満たさないプロセスのみを選択する (選択の否定)。 --deselect と等しい。
T
この端末の全てのプロセスを選択する。 引き数なしの t オプションと等しい。
-a
セッションリーダ (getsid(2) を参照) と端末を持たないプロセスを除く、 全てのプロセスを表示する。
a
BSD 形式の ("-" のない) オプションが使用された場合、 または ps の流儀 (personality) の設定が BSD 形式の場合に、 全てのプロセスの集合に対して課される 「自分自身のみ」という BSD 形式の制約をなくす。 この方式で選択されたプロセスの集合は、 他の手段で選ばれたプロセスの集合に加えられる。 このオプションの別の説明は以下の通り: このオプションを指定すると、 ps は端末 (tty) を持つ全てのプロセスをリストする。 また x オプションと共に指定すると、全てのプロセスをリストする。
-d
セッションリーダを除く全てのプロセスを選択する。
-e
全てのプロセスを選択する。-A と等しい。

g
本当に全てのプロセスを選択する。セッションリーダも含む。 このフラグは旧式で、 将来のリリースでは廃止されるかもしれない。 この振る舞いは通常 a フラグで暗黙に有効になり、 sunos4 の流儀で操作するときにのみ役立つ。
r
実行中のプロセスのみに選択を限定する。
x
BSD 形式の ("-" のない) オプションが使用された場合、 または ps の流儀の設定が BSD 形式の場合に、 全てのプロセスの集合に対して課される 「端末を持たなければならない」という BSD 形式の制約をなくす。 この方式で選択されたプロセスの集合は、 他の手段で選ばれたプロセスの集合に加えられる。 このオプションの別の説明は以下の通り: このオプションを指定すると、ps は呼び出したユーザーの所有する (ps と同じ EUID の) 全てのプロセスをリストする。 また a オプションと共に指定すると、全てのプロセスをリストする。
--deselect
指定された条件を満たさないプロセスのみを選択する (選択の否定)。 -N と等しい。

リストによるプロセス選択

これらのオプションは空白区切りまたはコンマ区切り形式の 1 つの引き数を受け付け、複数回指定できる。 例: ps -p "1 2" -p 3,4
-C  cmdlist
コマンド名で選択する。
実行ファイル名が cmdlist に含まれるプロセスを選択する。
-G  grplist
実グループ ID または実グループ名で選択する。
実グループ名または実グループ ID が grplist リストに含まれるプロセスを選択する。 実グループ ID とはプロセスを作成したユーザーのグループである。 getgid(2) を参照。
U  userlist
実効ユーザー ID (EUID) または実効ユーザー名で選択する。
実効ユーザー名または実効ユーザー ID が userlist に含まれるプロセスを選択する。 実効ユーザー ID はそのファイルアクセス許可が プロセスによって使用される (geteuid(2) を参照)。 -u, --user と等しい。
-U  userlist
実ユーザー ID (RUID) または実ユーザー名で選択する。
実ユーザー名または実ユーザー ID が userlist に含まれるプロセスを選択する。 実ユーザー ID はプロセスを作成したユーザーを識別する。 getuid(2) を参照。
-g  grplist
セッションと実効グループ名の OR で選択する。
セッションによる選択は多くの標準で指定されているが、 実効グループ ID による選択は、 いくつかのオペレーティングシステムで使用されている論理的な動作である。 この ps はリストが (セッションを表す) 数値だけの場合、 セッションで選択する。 グループ ID 番号による選択は、他のグループ名が 指定されている場合にのみ動作する。 -s--group オプションを参照すること。
p  pidlist
プロセス ID で選択する。-p, --pid と等しい。
-p  pidlist
PID で選択する。
プロセス ID 番号が pidlist にあるプロセスを選択する。 p, --pid と等しい。
-s  sesslist
セッション ID で選択する。
sesslist で指定されたセッション ID のプロセスを選択する。
t  ttylist
端末 (tty) で選択する。 -t, --tty とほぼ等しいが、 空の ttylist を使うことで、 ps と関連づけられている端末を表すことができる。 T オプションを使う方が、t と空の ttylist を使うより、 すっきりしている。
-t  ttylist
端末 (tty) で選択する。
ttylist で指定された端末と関連づけられているプロセスを選択する。 端末 (テキスト出力のための tty またはスクリーン) は、 いくつかの形式で指定できる: /dev/ttyS1, ttyS1, S1. 単なる "-" は、どの端末にも属さない プロセスを選択するのに使用される。
-u  userlist
実効ユーザー ID (EUID) または実効ユーザー名で選択する。
userlist にある実効ユーザー名 または実効ユーザー ID のプロセスを選択する。 実効ユーザー ID は、プロセスによってファイルアクセス許可が 使用されるユーザーを表す (geteuid(2) を参照)。 U, --user と等しい。
--Group  grplist
実グループ ID (RGID) または実グループ名で選択する。-G と等しい。
--User  userlist
実ユーザー ID (RUID) または実ユーザー名で選択する。-U と等しい。
--group  grplist
実効グループ ID (EGID) または実効グループ名で選択する。
実効グループ名または実効グループ ID が grouplist にあるプロセスを選択する。 実効グループ ID は、プロセスによってファイルアクセス許可が 使用されるグループを表す (geteuid(2) を参照)。 -g は、しばしば --group の代わりとされる。
--pid  pidlist
プロセス ID で選択する。-p, p と等しい。
--ppid  pidlist
親プロセスのプロセス ID で選択する。 親プロセスの ID が pidlist にあるプロセスを選択する。 つまり、pidlist にリストされているプロセスの 子プロセスを選択する。
--sid  sesslist
セッション ID で選択する。-s と等しい。
--tty  ttylist
端末で選択する。-t, t と等しい。
--user  userlist
実効ユーザー ID (EUID) または実効ユーザー名で選択する。 -u, U と等しい。
-123
--sid 123 と等しい。
123
--pid 123 と等しい。

出力フォーマットの制御

これらのオプションは、ps によって表示される情報を選択するのに使用される。 出力は流儀によって異なる可能性がある。
-F
特別に完全なフォーマット。 -F が暗黙のうちに指定する -f オプションを参照すること。
-O  format
-o と似ているが、いくつかのデフォルトカラムをプリロードする。 -o pid,format,state,tname,time,command または -o pid,format,tname,time,cmd と等しい。 下記の -o を参照すること。
O  format
プリロードされた o (上書きされる)。
BSD の O オプションは、-O (ユーザー定義の出力フォーマット。 いくつかのよく使われるフィールドは定義済) オプションのように動作したり、 あるいはソートの順序指定にも用いることができる。 このオプションにどちらの動作をさせるかは、 ヒューリスティックな手法を用いて決定する。 (ソートあるいはフォーマットについて) 望みの動作をさせるには、 その他のオプションを指定すること。 (例えば、-O または --sort と一緒に指定する)。

フォーマットオプションとして使用する場合は、 BSD の流儀で -O を指定するのと等しい。

-M
セキュリティデータのカラムを追加する。 Z と同じ。(SE Linux 用)。
X
レジスタフォーマット
Z
セキュリティデータのカラムを追加する。 -M と同じ。(SE Linux 用)。
-c
-l オプションとは異なるスケジューリング情報を表示する。
-f
完全なフォーマットでリストする。 このオプションは、他の多くの UNIX 形式オプションと組み合わせることが可能で、 その他のカラムを追加する。 またコマンドライン引き数も表示される。 -L と組み合わせて使うと、 NLWP (スレッド数), LWP (スレッド ID) カラムが追加される。 フォーマットキーワード argscomm については、 c オプションを参照すること。
j
BSD のジョブ制御フォーマット。
-j
jobs フォーマット。
l
BSD の長いフォーマット。
-l
長いフォーマット。 -y オプションは、このオプションと組み合わせることで、 しばしば役に立つ。
o  format
ユーザー定義フォーマットを指定する。 -o, --format と等しい。
-o  format
ユーザー定義フォーマット。
format は空白区切りまたはコンマ区切りリストの形式の 1 つの引き数である。 これにより各出力カラムを指定する方法を提供している。 「標準フォーマット指定子」のセクションで説明されている キーワードを認識する。 ヘッダは望みのものに変更できる (ps -o pid,ruser=RealUser -o comm=Command)。 全てのカラムヘッダが空の場合 (ps -o pid= -o comm=)、 ヘッダ行は出力されない。 ヘッダの幅が広い場合は、カラム幅が増やされる。 これは WCHAN のようなカラムの幅を広げるのに使われる (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm)。 明示的な幅の制御 (ps opid,wchan:42,cmd) も提供されている。 ps -o pid=X,comm=Y の挙動は流儀によって変わる。 "X,comm=Y" という名前の 1 つのカラムが出力される場合もあるし、 "X" と "Y" という名前の 2 つのカラムが出力される場合もある。 疑わしい場合は、-o オプションを複数使うこと。 デフォルトを望みのものにしたい場合は、 PS_FORMAT 環境変数を使うこと。 DefSysV と DefBSD は、 デフォルトの UNIX または BSD カラムを選択するためのマクロである。
s
シグナルフォーマット。
u
ユーザー指向のフォーマット。
v
仮想メモリフォーマット。
-y
フラグを表示しない。addr の代わりに rss を表示する。 このオプションは -l と一緒のときにのみ使用できる。
--format  format
ユーザー定義フォーマット。 -o, o と等しい。
--context
セキュリティコンテキストフォーマット (SE Linux 用)。

出力修正指定

-H
プロセスを階層表示する (森)。
N  namelist
名前リストファイルを指定する。 -n と等しい。上記の -n を参照すること。
O  order
ソート順の指定 (上書きされる)。
BSD の O オプションは、-O (ユーザー定義の出力フォーマット。 いくつかのよく使われるフィールドは定義済) オプションのように動作したり、 あるいはソートの順序指定にも用いることができる。 このオプションにどちらの動作をさせるかは、 ヒューリスティックな手法を用いて決定する。 (ソートあるいはフォーマットについて) 望みの動作をさせるには、 その他のオプションを指定すること。 (例えば、-O または --sort と一緒に指定する)。

ソートに用いる場合、廃止された BSD の O オプションの文法は O[+|-]k1[,[+|-]k2[,...]] である。 「廃止されたソートキー」にある 1 文字の短いキーのシーケンスを k1, k2, ... に指定すれば、 プロセスリストを複数レベルでソートできる。

"+" は現在では省略可能な指定で、 単にデフォルトのソート方向を繰り返しているに過ぎない。 O ソートと O フォーマットを区別する助けになる。 "-" はその直後のキーのソート順を逆順にする。

S
死んだ子プロセスの CPU 使用量といった情報を、親プロセスに加算する。 親プロセスが寿命の短い子プロセスを繰り返し fork して処理を行なうような システムを調べるのに役に立つ。
c
本当のコマンド名を表示する。 これは argv の値ではなく、実行ファイル名から導き出される。 よって、コマンド引き数とそれを修正したもの (setproctitle(3) を参照) は表示されない。 実際上、このオプションは args フォーマットキーワードを comm フォーマットキーワードに置き換える。 これは -f フォーマットオプションを、 様々な BSD 形式のフォーマットオプション (通常は全てのオプションがコマンド引き数を表示する) とともに 使う場合に役に立つ。 -f オプション、およびフォーマットキーワード argscomm を参照すること。
e
コマンドの後に環境を表示する。
f
ASCII アートでプロセス階層を表示する (森)。
h
へッダ行を表示しない (また BSD 流儀の場合はスクリーンごとに 1 つのへッダ行)
h オプションには問題がある。 標準的な BSD の ps では、 このオプションは出力の各ページにヘッダを出力することになるが、 古い Linux の ps ではヘッダを全く出力しないことになる。 この ps では Linux の利用法に倣い、ヘッダを出力しない。 ただし別途 BSD の流儀が選択されていれば、 出力の各ページにヘッダを出力するようになる。 長いオプションである --headers--no-headers を使えば、 現在の流儀に関係なく、各ページにヘッダを出力するか、 全くヘッダを出力しないかを選択することができる。
k  spec
ソート順を指定する。 ソート文法は [+|-]key[,[+|-]key[,...]] である。 複数文字のキーは「標準フォーマット指定子」のセクションから選ぶこと。 デフォルトのソートの方向は数値順・辞書順ともに昇順なので、"+" は省略してよい。 --sort と等しい。 例:
ps jaxkuid,-ppid,+pid
ps axk comm o comm,args
ps kstart_time -ef
-n  namelist
名前リストファイルを指定する。 N と等しい。
WCHAN の表示を正しく行うには、 名前リストファイルが必要である。 正しい出力のためには、名前リストファイルは現在の Linux カーネルに 正確に一致するものでなければならない。 このオプションを指定しない場合、 名前リストのデフォルトの検索パスは以下の通り:

$PS_SYSMAP
$PS_SYSTEM_MAP
/proc/*/wchan
/boot/System.map-`uname -r`
/boot/System.map
/lib/modules/`uname -r`/System.map
/usr/src/linux/System.map
/System.map

n
WCHAN と USER を数値で出力する (UID と GID の全てのタイプを含む)。
-w
出力幅を広げる。このオプションを 2 つ指定すると、幅の制限がなくなる。
w
出力幅を広げる。このオプションを 2 つ指定すると、幅の制限がなくなる。
--cols  n
スクリーンの幅を指定する。
--columns  n
スクリーンの幅を指定する
--cumulative
死んだ子プロセスも (親プロセスへの加算として) 含める。
--forest
ASCII アートでプロセス階層を表示する。
--headers
ヘッダ行を繰り返す。出力の 1 ページ毎に 1 行。
--no-headers
ヘッダ行を一切表示しない。
--lines  n
スクリーンの行数を設定する。
--rows  n
スクリーンの行数を設定する。
--sort  spec
ソート順を指定する。 ソートの文法は [+|-]key[,[+|-]key[,...]] である。 複数文字のキーは「標準フォーマット指定子」セクションから選ぶこと。 デフォルトのソートの方向は数値順・辞書順ともに昇順なので、"+" は任意である。 k と等しい。 例: ps jax --sort=uid,-ppid,+pid
--width  n
スクリーンの幅を指定する

スレッド表示

H
スレッドをプロセスのように表示する。
-L
可能ならば LWP と NLWP カラムをつけてスレッドを表示する。
-T
可能ならば SPID カラムをつけてスレッドを表示する。
m
プロセスの後にスレッドを表示する。
-m
プロセスの後にスレッドを表示する。

その他の情報

L
全てのフォーマット指定子をリストする。
-V
procps のバージョンを表示する。
V
procps のバージョンを表示する。
--help
ヘルプメッセージを表示する。
--info
デバッグ情報を表示する。
--version
procps のバージョンを表示する。

注意

この ps は /proc にある仮想ファイルを読み込んで動作する。 この ps は kmem に suid する必要はなく、 動作にいかなる特権も必要としない。 この ps に特別な許可属性を与えないようにすること。

この ps が WCHAN の表示を正しく行うには、 名前リストファイルにアクセスする必要がある。 2.6 より前のカーネルでは、System.map ファイルが インストールされていなければならない。

現在のところ CPU 使用率は、プロセスの生存期間中に 実行に利用した時間のパーセンテージで表される。 これは理想的ではなく、ps が準拠すべき標準に準拠していない。 CPU 使用率は足し合わせても正確に 100% になることは少ない。

SIZE フィールドと RSS フィールドには、プロセスの一部 (page tables, kernel stack, struct thread_info, struct task_struct) が 含まれない。 これらは最低 20 Ki バイト以上あり、必ずメモリに常駐している。 SIZE はプロセスの仮想サイズ (code+data+stack) である。

<defunct> マークがついたプロセスは死んだプロセス (ゾンビ) である。 これらは親プロセスによって正しく消去されていないために残っている。 これらのプロセスは、親プロセスが終了すると init(8) によって消去される。

プロセスフラグ

これらの値の合計は、flags 出力指定子で提供される "F" カラムに表示される。
1
fork されたが exec されていない。
4
スーパーユーザー権限を使っている。

プロセスの状態コード

s, stat, state 出力指定子 (ヘッダ "STAT" または "S") がプロセス状態の説明のために 表示する値を以下に示す。
D
割り込み不可能なスリープ状態 (通常 IO 中)
R
実行中または実行可能状態 (実行キューにある)
S
割り込み可能なスリープ状態 (イベントの完了を待っている)
T
ジョブ制御シグナルまたはトレースされているために停止中の状態
W
ページング状態 (2.6.xx カーネルからは無効)
X
死んだ状態 (見えるべきではない)
Z
終了したが、親プロセスによって回収されなかった、 消滅した (ゾンビ) プロセス

BSD 形式で stat キーワードが用いられたときは、 以下の添付文字が表示されることがある。

<
優先度の高いプロセス (他のユーザーに対して良くない)
N
優先度の低いプロセス (他のユーザーに対して良い)
L
実メモリのページをロックして利用している (リアルタイム処理やカスタム IO 向け)
s
セッションリーダ
l
マルチスレッド化されている (NPTL pthreads が行うように、CLONE_THREAD が使われている)
+
フォアグラウンドのプロセスグループに含まれている

廃止されたソートキー

これらのキーは BSD の O オプションで使用される (ソートに使われるとき)。 GNU の --sort オプションはこれらのキーを使わないが、 下記の「標準的なフォーマット指定子」のセクションで説明されている 指定子を使用する。 ソートで使用される値は、ps が内部で使用する値であり、 出力フォーマットフィールドで使用される 「加工 (cook) された」値ではない点に注意すること (例えば端末 (tty) でソートする場合は、デバイス番号でソートするのであって、 表示される端末名でソートするのではない)。 加工された値でソートしたい場合は、 ps の出力を sort(1) コマンドにパイプすること。

キー 長い形式 説明
c cmd 実行ファイルの短い名前
C pcpu cpu 使用率
f flags フラグ (長い形式の F フィールドの書式)
g pgrp プロセスのグループ ID
G tpgid 制御端末プロセスグループ ID
j cutime 累積したユーザー時間
J cstime 累積したシステム時間
k utime ユーザー時間
m min_flt マイナーページフォルトの回数
M maj_flt メジャーページフォルトの回数
n cmin_flt マイナーページフォルトの累積数
N cmaj_flt マイナーページフォルトの累積数
o session セッション ID
p pid プロセス ID
P ppid 親プロセスのプロセス ID
r rss 常駐セットの大きさ
R resident 常駐ページ数
s size メモリサイズ (キロバイト単位)
S share 占めているページの量
t tty 制御端末のデバイス番号
T start_time プロセスが起動した時刻
U uid ユーザー ID 番号
u user ユーザー名
v vsize 仮想メモリの全サイズ (kB 単位)
y priority カーネルスケジューリングの優先度

AIX フォーマット記述子

この ps は AIX のフォーマット記述子をサポートしている。 これは printf(1)printf(3) の 書式コードと似たような動作をする。 例えば通常のデフォルト出力は ps -eo "%p %y %x %c" のようにつくることができる。 通常のコードは次のセクションで説明されている。
コード 通常形式 ヘッダ
%C pcpu %CPU
%G group GROUP
%P ppid PPID
%U user USER
%a args COMMAND
%c comm COMMAND
%g rgroup RGROUP
%n nice NI
%p pid PID
%r pgid PGID
%t etime ELAPSED
%u ruser RUSER
%x time TIME
%y tty TTY
%z vsz VSZ

標準フォーマット指定子

出力フォーマット (たとえば -o オプション) を制御したり、 GNU 形式の --sort オプションで 選択されたプロセスをソートしたりするための いくつかのキーワードがある。

例: ps -eo pid,user,args --sort user

このバージョンの ps は 他の ps の実装で使われている多くのキーワードを認識しようとする。

以下のユーザー定義フォーマット指定子はスペースを含むことができる: args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart, start.

いくつかのキーワードはソートには使えない。

コード ヘッダ 説明
%cpu %CPU プロセスの cpu 使用率は "##.#" というフォーマットである。 現在のところ CPU 使用率は、プロセスの生存期間中に 実行に利用した時間のパーセンテージで表される。 これを全部足しても 100% になることは (よほど幸運でなければ) ない。 (別名 pcpu)。
%mem %MEM マシンの物理メモリに対するプロセスの常駐セットサイズのパーセンテージ。 (別名 pmem)。
args COMMAND 文字列の引き数がついたコマンド。 引き数を変更したものが表示されるかも知れない。 このカラムの出力には空白が含まれる場合がある。 <defunct> というマークがついたプロセスは、部分的に死んでいて、 親プロセスによって完全に破壊されるのを待っている。 プロセスの引き数が取得できない場合もある。 その場合、ps は代わりに実行ファイル名を括弧の中に表示する。 (別名 cmdcommand)。 comm フォーマットキーワード・ -f オプション・c オプションも参照すること。 最後に指定された場合、このカラムは画面の端まで拡張される。 出力がファイルや他のコマンドにリダイレクト (パイプ) されるときなど、 ps がディスプレイの幅を決定できない場合は、 出力幅は定義されない (80 文字・制限なし・TERM 変数で決定されるなどがありえる)。 このような場合は、COLUMNS 環境変数や --cols オプションを使えば、幅を正確に決定できる。 w または -w オプションを使っても幅を調整できる。
blocked BLOCKED ブロックされたシグナルのマスク。signal(7) を参照。 フィールドの幅に応じて、32 ビットまたは 64 ビットのマスクが 16 進数フォーマットで表示される。 (別名 sig_blocksigmask)。
bsdstart START コマンドが起動した時刻。 プロセスが 24 時間以内に起動されていた場合、 出力フォーマットは " HH:MM" であり、 24 時間以前の場合は "mmm dd" である。 (ここで mmm は月の名前の 3 文字である)。
bsdtime TIME ユーザーとシステムの cpu 時間の合計。 表示フォーマットは通常は "MMM:SS" であるが、 プロセスが cpu 時間を 999 分より多く使っている場合は、右側へシフトする。
c C プロセッサ使用率。 現在のところ、プロセスの生存期間中に利用したパーセンテージを表す整数である。 (%cpu を参照)。
caught CAUGHT キャッチされたシグナルのマスク。 signal(7) を参照。 フィールドの幅に応じて、32 ビットまたは 64 ビットのマスクが 16 進数フォーマットで表示される。 (別名 sig_catchsigcatch)。
class CLS プロセスのスケジューリングのクラス。 (別名 policycls)。 フィールドに表示される可能性のある値は、以下の通り: - 報告されていない TS SCHED_OTHER FF SCHED_FIFO RR SCHED_RR ? 不明な値
cls CLS プロセスのスケジューリングのクラス。 (別名 policyclass)。 フィールドに表示される可能性のある値は、以下の通り: - 報告されていない TS SCHED_OTHER FF SCHED_FIFO RR SCHED_RR ? 不明な値
cmd CMD args を参照。(別名 argscommand)。
comm COMMAND コマンド名 (実行ファイル名のみ)。 引き数を変更したものは表示されない。 <defunct> というマークがついたプロセスは、部分的に死んでいて、 親プロセスによって完全に破壊されるのを待っている。 このカラムの出力には空白が含まれる場合がある。 (別名 ucmducomm)。 args フォーマットキーワード・ -f オプション・c オプションも参照すること。 最後に指定された場合、このカラムは画面の端まで拡張される。 出力がファイルや他のコマンドにリダイレクト (パイプ) されるときなど、 ps がディスプレイの幅を決定できない場合は、 出力幅は定義されない (80 文字・制限なし・TERM 変数で決定されるなどがありえる)。 このような場合は、COLUMNS 環境変数や --cols オプションを使えば、幅を正確に決定できる。 w または -w オプションを使っても幅を調整できる。
command COMMAND args を参照。(別名 argscmd)。
cp CP パーミル (パーセントの 1/10) で表した CPU 使用率。(%cpu を参照)。
cputime TIME 累積した CPU 時間。"[dd-]hh:mm:ss" というフォーマットで表示される。 (別名 time)。
egid EGID プロセスの実効グループ ID 番号を 10 進の整数で表示する。 (別名 gid)。
egroup EGROUP プロセスの実効グループ ID。 テキストのグループ ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。 (別名 group).
eip EIP 命令ポインタ。
esp ESP スタックポインタ
etime ELAPSED プロセスが起動されてからの経過時間。 [[dd-]hh:]mm:ss というフォーマットで表示される。
euid EUID 実効ユーザー ID。(別名 uid)。
euser EUSER 実効ユーザー名。 テキストのユーザー ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。 n オプションを使って 10 進数表示を強制できる。 (別名 unameuser)。
f F プロセスに関連づけられたフラグ。「プロセスフラグ」のセクションを参照。 (別名 flagflags)。
fgid FGID ファイルシステムアクセスグループ ID。(別名 fsgid)。
fgroup FGROUP ファイルシステムアクセスグループ ID。 テキストのグループ ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。 (別名 fsgroup).
flag F f を参照。(別名 fflags)。
flags F f を参照。(別名 fflag)。
fname COMMAND プロセスの実行ファイルのベース名の先頭 8 バイト。 このカラムの出力にはスペースが含まれる場合がある。
fuid FUID ファイルシステムアクセスユーザー ID。(別名 fsuid)。
fuser FUSER ファイルシステムアクセスユーザー ID。 テキストのユーザー ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。
gid GID egid を参照。(別名 egid)。
group GROUP egroup を参照。(別名 egroup)。
ignored IGNORED 無視されたシグナルのマスク。signal(7) を参照。 フィールドの幅に応じて、32 ビットまたは 64 ビットのマスクが 16 進数フォーマットで表示される。 (別名 sig_ignore, sigignore)。
label LABEL セキュリティラベル。 最も一般的に使われるのは SE Linux のコンテキストデータである。 これはセキュリティレベルの高いシステムにある 強制アクセス制御 (Mandatory Access Control, "MAC") のために存在する。
lstart STARTED コマンドが起動された時刻。
lwp LWP lwp (軽量プロセス (light weight process) またはスレッド) の ID が表示される。 (別名 spidtid)。
ni NI nice 値。 この値の範囲は 19 (最も良い) から -20 (他のプロセスに対して良くない) である。 nice(1) を参照。(別名 nice)。
nice NI ni を参照。(別名 ni)。
nlwp NLWP プロセスにおける lwp (スレッド) の数。(別名 thcount)。
nwchan WCHAN プロセスが休止しているカーネル関数のアドレス (カーネル関数名が必要な場合は wchan を使うこと)。 実行中のタスクは、このカラムにダッシュ ('-') を表示する。
pcpu %CPU %cpu を参照。(別名 %cpu)。
pending PENDING 待機中 (pending) シグナルのマスク。signal(7) を参照。 プロセスに待機しているシグナルは、 各スレッドに待機しているシグナルと区別される。 両方を見たい場合は、m オプションまたは -m オプションを使うこと。 フィールドの幅に応じて、32 ビットまたは 64 ビットのマスクが 16 進数フォーマットで表示される。 (別名 sig)。
pgid PGID プロセスグループ ID。 また、これはプロセスグループリーダのプロセス ID と等しい。 (別名 pgrp)。
pgrp PGRP pgid を参照。(別名 pgid)。
pid PID プロセスのプロセス ID 番号。
pmem %MEM %mem を参照。(別名 %mem)。
policy POL プロセスのスケジューリングのクラス。 (別名 classcls)。 表示される可能性のある値は、以下の通り: - 報告されていない TS SCHED_OTHER FF SCHED_FIFO RR SCHED_RR ? 不明な値
ppid PPID 親プロセスのプロセス ID。
psr PSR プロセスが現在割り当てられているプロセッサ。
rgid RGID 実グループ ID。
rgroup RGROUP 実グループ名。 テキストのグループ ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。
rss RSS 常駐セットの大きさ。 タスクが使用しているスワップされていない物理メモリ (kB 単位)。 (別名 rssizersz)。
rssize RSS rss を参照。(別名 rssrsz)。
rsz RSZ rss を参照。(別名 rssrssize)。
rtprio RTPRIO リアルタイム優先度。
ruid RUID 実ユーザー ID。
ruser RUSER 実ユーザー ID。 テキストのユーザー ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。
s S 最小限の状態表示 (1 文字)。 それぞれの値については、 「プロセスの状態コード」のセクションを参照すること。 その他の情報を表示させたい場合は、stat も参照すること。 (別名 state)。
sched SCH プロセスのスケジューリングのポリシー。 ポリシー sched_other, sched_fifo, sched_rr は それぞれ 0, 1, 2 として表示される。
sess SESS セッション ID。 また、これはセッションリーダのプロセス ID と等しい。 (別名 sessionsid)。
sgi_p P そのプロセスが現在実行されているプロセッサ。 プロセスが現在のところ実行中でない場合、 または実行可能でない場合、"*" が表示される。
sgid SGID 保存グループ ID。 (別名 svgid)。
sgroup SGROUP 保存グループ名。 テキストのグループ ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。
sid SID sess を参照。(別名 sesssession)。
sig PENDING pending を参照。(別名 pendingsig_pend)。
sigcatch CAUGHT caught を参照。(別名 caughtsig_catch)。
sigignore IGNORED ignored を参照。(別名 ignoredsig_ignore)。
sigmask BLOCKED blocked を参照。(別名 blockedsig_block)。
size SZ プロセスの全ての書き込み可能なページがダーティ (dirty) で、 スワップアウトされると仮定したときの、 必要とされるスワップ空間の概算の大きさ。 この数値はとても大雑把である!
spid SPID lwp を参照。(別名 lwptid)。
stackp STACKP プロセスのスタックの最下位 (開始) アドレス。
start STARTED コマンドが起動した時刻。 プロセスが 24 時間以内に起動されていた場合、 出力フォーマットは " HH:MM:SS" であり、 24 時間以前の場合は "  mmm dd" である。 (ここで mmm は月の名前の 3 文字である)。
start_time START プロセスの起動時刻または起動日。 ps が起動されたのと同じ年に プロセスが起動されていない場合は、年のみが表示される。 同じ日に起動されていない場合は "mmmdd" である。 それ以外は "HH:MM" である。
stat STAT 複数文字のプロセス状態。 それぞれの値の意味は、 「プロセスの状態コード」のセクションを参照すること。 最初の文字のみを表示したい場合は、 sstate も参照すること。
state S s を参照。(別名 s)。
suid SUID 保存ユーザー ID。(別名 svuid)。
suser SUSER 保存ユーザー名。 テキストのユーザー ID が取得できて、かつフィールド幅が許せば、 テキストで表示される。 それ以外の場合は 10 進数で表示される。 (別名 svuser)。
svgid SVGID sgid を参照。(別名 sgid).
svuid SVUID suid を参照。(別名 suid)。
sz SZ プロセスのコアイメージの物理ページサイズ。 これにはテキスト・データ・スタック空間が含まれる。 デバイスマッピングは現在のところ除外されているが、これは変更される。 vszrss を参照。
thcount THCNT nlwp を参照。(別名 nlwp)。 プロセスが所有するカーネルスレッドの数。
tid TID lwp を参照。(別名 lwp)。
time TIME 累積した CPU 時間。"[dd-]hh:mm:ss" フォーマットで表示される。 (別名 cputime)。
tname TTY 制御端末 (tty)。 (別名 tttty)。
tpgid TPGID プロセスが接続されている端末 (tty) 上の フォアグラウンドプロセスグループの ID。 プロセスが端末に接続されていない場合は -1 である。
tt TT 制御端末 (tty)。(別名 tnametty)。
tty TT 制御端末 (tty)。(別名 tnamett)。
ucmd CMD comm を参照。(別名 commucomm)。
ucomm COMMAND comm を参照。(別名 commucmd)。
uid UID euid を参照。(別名 euid)。
uname USER euser を参照。(別名 euseruser)。
user USER euser を参照。(別名 euseruname)。
vsize VSZ vsz を参照。(別名 vsz)。
vsz VSZ プロセスの仮想メモリサイズ (KiB, 1024 バイト単位)。 デバイスマッピングは現在のところ除外されているが、これは変更される。 (別名 vsize)。
wchan WCHAN プロセスがスリープしているカーネル関数の名前。 プロセスが実行中の場合は "-" である。 プロセスがマルチスレッドで、 かつ ps がスレッドを表示していない場合は、"*" である。

環境変数

以下の環境変数が ps に影響する:
COLUMNS
デフォルトのディスプレイの幅を変更する。
LINES
デフォルトのディスプレイの高さを変更する。
PS_PERSONALITY
posix, old, linux, bsd, sun, digital のどれかに設定する。 (以下の「流儀\[u300D]のセクションを参照)。
CMD_ENV
posix, old, linux, bsd, sun, digital のどれかに設定する。 (以下の「流儀\[u300D]のセクションを参照)。
I_WANT_A_BROKEN_PS
obsolete なコマンドラインの解釈に強制する。
LC_TIME
日付のフォーマット。
PS_COLORS
現在のところサポートされていない。
PS_FORMAT
デフォルトの出力フォーマットを上書きする。 -o オプションで使われるタイプを表す フォーマット文字列にこの値を設定できる。 DefSysVDefBSD という値が特に役立つ。
PS_SYSMAP
名前リスト (System.map) のデフォルトの場所。
PS_SYSTEM_MAP
名前リスト (System.map) のデフォルトの場所。
POSIXLY_CORRECT
良くない「仕様」を無視する際に言い訳をしない。
POSIX2
"on" に設定されると、POSIXLY_CORRECT として振舞う。
UNIX95
良くない「仕様」を無視する際に言い訳をしない。
_XPG
CMD_ENV=irix の非標準的な振舞いをキャンセルする。

一般にはこれらの変数を設定するのはあまり良い考えではない。 唯一の例外は CMD_ENV または PS_PERSONALITY である。 これらは Linux を正常なシステムにする。 この設定を行わないと、ps は Unix98 標準における 役に立たない悪い部分に従う。

流儀

390 S/390 OpenEdition の ps のように振舞う
aix AIX の ps のように振舞う
bsd FreeBSD の ps のように振舞う (全く標準的ではない)
compaq Digital Unix の ps のように振舞う
debian 古い Debian の ps のように振舞う
digital Tru64 (かつての Digital Unix または OSF/1) の ps のように振舞う
gnu 古い Debian の ps のように振舞う
hp HP-UX の ps のように振舞う
hpux HP-UX の ps のように振舞う
irix Irix の ps のように振舞う
linux ***** 推奨される *****
old 古い Linux の ps のように振舞う (全く標準的ではない)
os390 OS/390 Open Edition の ps のように振舞う
posix 標準
s390 OS/390 Open Edition の ps のように振舞う
sco SCO の ps のように振舞う
sgi Irix の ps のように振舞う
solaris2 Solaris 2+ (SunOS 5) の ps のように振舞う
sunos4 SunOS 4 (Solaris 1) の ps のように振舞う (全く標準的ではない)
svr4 標準
sysv 標準
tru64 Tru64 (かつての Digital Unix または OSF/1) の ps のように振舞う
unix 標準
unix95 標準
unix98 標準

関連項目

top(1), pgrep(1), pstree(1), proc(5).

準拠

この ps は以下に準拠する:

1
Version 2 of the Single Unix Specification
2
The Open Group Technical Standard Base Specifications, Issue 6
3
IEEE Std 1003.1, 2004 Edition
4
X/Open System Interfaces Extension [UP XSI]
5
ISO/IEC 9945:2003

著者

Branko Lankester <lankeste@fwi.uva.nl> が最初に ps を書いた。 Michael K. Johnson <johnsonm@redhat.com> は proc ファイルシステムに対応させるための大幅な書き換えを行った。 プロセス内のいくつかの項目を変更した。 Michael Shields <mjshield@nyx.cs.du.edu> は pid リスト機能を追加した。 Charles Blake <cblake@bbn.com> は、複数レベルのソート・ dirent 形式のライブラリ・デバイス名−番号間の mmap データベース・ 直接 System.map を二分木的に探索する手法、を追加し、 コードとドキュメントの大幅な整理を行った。 David Mosberger-Tang は psupdate のジェネリックな BFD サポートを書いた。 Albert Cahalan <albert@users.sf.net> は ps を書き直して Unix98 と BSD への完全な対応を行った。 obsolete な文法や外来の文法に関するあまり美しくないハックも行った。

バグ報告は <procps-feedback@lists.sf.net> まで送って欲しい。 (訳註: このメーリングリストの) 購読の必要もないし、奨めもしない。

July 28, 2004 Linux