Top>Linux>コマンド>ps

コマンド
ps

説明
プロセスの詳細とその一覧を表示する。
とにかく使用例が知りたい場合は本ページの最下部に使用例を記載しているので参照されたし。

オプションの指定方法としては大まかに2フェーズでの指定になるようである。
フェーズ1:どのようなプロセスを表示するか。
①ログインしている端末に紐づけられたプロセスを表示する。例) ps
②ログインしている自身および他の端末に紐づけられたプロセスを表示する。 例) ps a
③端末および端末に紐づけられていないプロセスを表示する。(全てのプロセス。) 例) ps ax
その他プロセスIDの指定やコマンド名の指定など多数

フェーズ2:各プロセスのどの情報をどのように表示するのか。
代表的な項目をユーザ指向の形式で表示するなど。 例) ps u
※個別に項目を指定して表示することも可能。

※オプションの指定形式にはUNIX形式、BSD形式、GNU形式がある。
※オプションのそれぞれの形式はつぎのとおり。
UNIX形式:オプションの前にダッシュ(-)をおく。例) ps -a
BSD形式:オプションの前にダッシュ(-)を使用しない。例) ps a
GNU形式:オプションの目にダッシュ(-)を二つ使用する。例) ps –-pid 9940
※環境変数に各種オプションを指定することによりデフォルトの表示内容や形式を制御することも可能であるが、本ドキュメントでの記載は割愛する。
※psコマンドのバージョンは procps-ng version 3.3.10 とする。

書式
ps [複数オプション]

オプション
※下記表のカテゴリはヘルプメッセージ(ps --help)のカテゴリーである。
カテゴリ オプション 説明
simple -A, -e 全てのプロセスを選択する。
simple -a セッションリーダと端末を持たないプロセスを除く全てのプロセスを表示する。
simple a 端末(tty)を持つ全てのプロセスを表示する。また、xオプションと共に指定するとすべてのプロセスを選択する。
simple -d セッションリーダを除く全てのプロセスを選択する。
simple -N, --deselect 指定された条件を満たさないプロセスのみを選択する。
simple T この端末のすべてのプロセスを選択する。引数なしのtオプションと等しい。
simple x プロセスのリストを取得する場合に「端末を持たなければならない」という制約をなくす。aオプションと合わせて指定されるとすべてのプロセスを選択する。
list -C [cmd list] コマンド名で選択する。実行ファイル名が cmd list に含まれるプロセスを選択する。
list -G [group list],
--Group [group list]
実グループ名または実グループ ID が group list リストに含まれるプロセスを選択する。
list p [pid list]
-p [pid list]
--pid [pid list]
プロセス ID 番号が pid list にあるプロセスを選択する。
list --ppid 親プロセス ID 番号が pid list にあるプロセスを選択する。
list -s [sessionID list]
--sid [sessionID list]
セッションIDが sessionID list にあるプロセスを選択する。
list t [tty list]
-t [tty list]
--tty [tty list]
端末名が tty list にあるプロセスを選択する。 例) ps u -t pts/0,pts/1
list -u [uid list]
U [uid list]
--user [uid list]
実効ユーザIDもしくは実効ユーザ名が uid list にあるプロセスを選択する。
list -U [uid list]
--User [uid list]
実ユーザIDもしくは実ユーザ名が uid list にあるプロセスを選択する。
output -F 完全なフォーマットで出力する。暗黙的に-fオプションが指定される。
output -f 完全なフォーマットで出力する。コマンドライン引数も表示される。その他多くのオプションと組み合わせが可能となっている。
output f, --forest ASCII アートでプロセス階層を表示する。 例) ps axufw
output -H プロセスを階層表示する。
output -j ジョブ制御フォーマットで出力する。PGID, SIDが追加表示される。
output j BSD ジョブ制御フォーマットで出力する。PPID, PFID, SID, TPGID, STAT, UIDが追加表示される。
output -l ロングフォーマットで出力する。 例) ps ax -l
output l BSDロングフォーマットで出力する。 例) ps axl
output -M, Z SELinuxに関するセキュリティ情報を表示する。
output -O [format] 追加のユーザ定義の出力フォーマットを指定する。指定したフォーマットは下記の位置に表示される。
pid,[format],state,tname,time,command または
pid,[format],tname,time,cmd
output O [format] -O オプションの機能に加えて、ソート順の指定も可能となっている。
output o [format]
-o [format]
--format [format]
出力される項目を完全に制御するには-Oオプションではなくこのオプションを指定する。
例) ps ax -o pid,comm=command
※全てのプロセスのプロセスIDとコマンドラインを表示する。コマンドラインのヘッダーをcommandに変更する。
output s シグナルフォーマット形式で出力する。例) ps axs
output u ユーザ指向のフォーマとで出力する。例) ps axu
output v 仮想メモリフォーマットで出力する。例) ps axv
output X レジスターフォーマットで出力する。 例) ps axX
output -y いくつかのフラグを表示しない。ADDRのかわりにRSSを表示する。
※このオプションは -l オプションを指定した時のみ合わせて使用する。
output --context SELinuxのためのセキュリティコンテキストを表示する。
output --headers ページ毎にヘッダー行を出力する。
output --no-headers ヘッダー行を出力しない。
※psコマンドを定期実行して結果をロギングする際などに有効。
output --cols [num]
--columns [num]
–-width [num]
スクリーンの幅を num に設定する。
output --rows [num]
--lines [num]
スクリーンの行数を num に設定する。
output w, -w 出力幅を広げる、このオプションを二つ指定すると出力幅が無制限となる。 例) ps axuww
thread H スレッドをプロセスのように表示する。
thread -L 可能ならば LWP と NLWP カラムをつけてスレッドを表示する。
thread m, -m プロセスの後にスレッドを表示する。
thread -T 可能ならば SPID カラムをつけてスレッドを表示する。
misc -c スケジューリングクラスを表示する。詳細は不明。
misc c 実際のコマンド名を表示する。コマンド名のみが表示される。コマンドのパスや引数等は表示されない。
例) ps axuc
misc e コマンドの後に環境変数を表示する。例) ps axue
misc k, --sort ソート順を指定する。ソート対象の項目については後述の「表示フォーマット指定子」を参照されたし。
昇順でソートする場合は、ソート対象の項目の前に+ もしくは何も付加しない。
降順でソートする場合は、ソート対象の項目の前に – を付加する。
項目と項目は”, “で区切る。
例) ps axuwck -%cpu
※%cpuを降順に表示する。
misc L 項目の一覧(項目名と項目ラベル)を表示する。 例) ps L
misc n USER と WCHAN を数値で出力する。
misc S, --cumulative 死んだ子プロセスも表示する。
misc --help ヘルプメッセージを表示する。
misc --info デバッグ情報を表示する。
misc -V, V, --version バージョン情報を表示する。

標準フォーマット指定子
表示項目内容について下記に記載する。
※項目コードは表示項目の指定やそのソート順の指定時に各オプション(o オプションなど)と共に使用される。
※ヘッダーラベルは実際に一覧に表示される項目名称となる。
項目コード ヘッダーラベル 説明
%cpu, pcpu %CPU CPUの%使用率。”##.#”という形式で表示される。プロセスの生存期間中に実行に利用した時間のパーセンテージで表示される。
%mem, pmem %MEM 物理メモリに対するプロセスの常駐セットサイズがパーセンテージで表示される。
args, cmd, command COMMAND コマンド名とその引数両方が表示される。引数については実際の引数とことなるものが表示される場合もありうる。 なお "defunct" というマークがついたプロセスはゾンビプロセスである。
blocked BLOCKED ブロックされたシグナルのマスク。※詳細は不明。
bsdtime TIME ユーザーとシステムのCPU時間の合計。”MMM.SS”の形式で表示される。999分より多く使っている場合は右へシフトされる。(“MMMM.S)
c C プロセッサ使用率。プロセスの生存期間中に利用したパーセンテージを整数であらわす。(0~100)
caught CAUGHT キャッチされたシグナルのマスク。※詳細は不明。
class, cls, policy CLS プロセスのスケジューリングクラス。フィールドに表示される可能性のある値は下記のとおり。
-: 報告されていない。
TS: SCHED_OTHER
FF: SCHED_FIFO
RR: SCHED_RR
?: 不明な値
comm COMMAND 実効ファイル名のみを表示する。引数は表示しない。
cp CP パーミル(パーセントの 1/10)で表示したCPU使用率。%CPUが 54.1 の場合 541 と表示される。
cputime, time TIME 累積したCPU時間。”[dd-]hh:mm:ss” というフォーマットで表示される。
egid, gid EGID プロセスの実効グループ ID 番号を 10 進の整数で表示する。
egroup, group EGROUP 実効グループ名を表示する。フィールド幅が確保できない場合は実効グループIDが10進数で表示される。
eip EIP 命令ポインタ。
esp esp スタックポインタ。
etime ELAPSED プロセスが起動されてからの経過時間。[[dd-]hh:]mm:ss というフォーマットで表示される。
euid, uid EUID 実行ユーザID
euser, uname, user EUSER 実効ユーザ名。表示フィールド幅が確保できない場合は実効ユーザIDが10進数で表示される。nオプションを使って10進数表示を強制できる。
f, flag, flags F プロセスフラグ。具体的な内容は下記のとおり。
1: fork されたが exec されていない。
4: スーパーユーザ権限を持っている。
fgid, fsgid FGID ファイルシステムのアクセスグループID。
fgroup, fsgroup FGROUP ファイルシステムのアクセスグループ名。表示フィールド幅が確保できない場合はアクセスグループIDが10進数で表示される。
fname COMMAND プロセスの実行ファイル名のベース名の先頭8バイト。出力名にはスペースが含まれることもある。
fuid, fsuid FUID ファイルシステムのアクセスユーザID。
fuser, fsuser FUSER ファイルシステムのアクセスユーザID。
gid GID egid を参照。
group GROUP egroup を参照。
ignored, sig_ignore, sigignore IGNORED 無視されたシグナルのマスク。フィールド幅に応じて32ビット、または64ビットマスクが16進数フォーマットで表示される。
label LABEL セキュリティラベル。SELinuxのコンテキストデータ。これはセキュリティレベルの高いシステムにある強制アクセス制御(Mandatory Access Control (MAC))のために存在する。
lstart STARTED コマンドが起動された日時。
lwp, spid, tid LWP ライトウェイトプロセスまたはスレッドのIDが表示される。
ni, nice NI nice値。負のnice値は高い優先度を意味し、正のnice値は低い優先度を意味する。0の場合はタスクの割り当て時に優先度が調整されていないことを意味する。
nlwp, thcount NLWP プロセスにおける lwp(スレッド)の数。
nlwp, thcount NLWP プロセスにおける lwp(スレッド)の数。
nwchan WCHAN プロセスが休止しているカーネル関数のアドレス。カーネル関数名が必要な場合はwchan を使うこと。実行中のタスクはこのカラムにダッシュ(‘-’)を表示する。
pcpu %CPU %cpu を参照。
pending, sig, sig_pend PENDING 待機中のシグナルのマスクを表示する。
pgid, pgrp PGID プロセスグループID。プロセスグループリーダのプロセスIDと等しい。
pgrp PGRP pgid を参照。
pid PID プロセスID。
pmem, %mem %MEM %mem を参照。
policy, class, cls POL classを参照。
ppid PPID 親プロセスのプロセスID。
psr PSR プロセスが現在割り当てられているプロセッサ。
rgid RGID 実グループID。
rgroup RGROUP 実グループ名。表示フィールド幅が確保できない場合は実グループIDが10進数で表示される。
rss, rssize, rsz RSS タスクが使用しているスワップされていない物理メモリ(kB)。
rssize RSS rss を参照。
rsz RSZ rss を参照。
rtprio RTPRIO リアルタイム優先度。
ruid RUID 実ユーザID。
ruser RUSER 実ユーザ名。表示フィールド幅が確保できない場合は実グループIDが10進数で表示される。
s S プロセスの状態コードを表示する。状態コードは下記のとおり。
D:割り込み不可能なスリープ状態 (通常 IO 中)。
R: 実行中または実行可能状態 (実行キューにある)。
S:割り込み可能なスリープ状態 (イベントの完了を待っている)。
T:ジョブ制御シグナルまたはトレースされているために停止中の状態。
W:ページング状態 (2.6.xx カーネルからは無効)。
X:死んだ状態 (見えるべきではない)。
Z:終了したが、親プロセスによって回収されなかった、 消滅した(ゾンビ)プロセス。
sched SHC プロセスのスケジューリングポリシー。
0: sched_other
1: sched_fifo
2: sched_rr
sess, session, sid SESS セッションID。セッションリーダーのプロセスIDと等しい。
sgi_p P プロセスが現在実行されているプロセッサ。プロセスが実行中でない場合、または実行可能でない場合は * が表示される。
sgid, svgid SGID 保存グループID。
sgroup SGROUP 保存グループ名。表示フィールド幅が確保できない場合は保存グループIDが10進数で表示される。
sid, sess, session SID sess を参照。
sig, pending, sig_pend PENDIGN pending を参照。
sig_pend, pending, sig SIGNAL pending を参照。
sigcatch, caught, sig_catch CAUGHT caught を参照。
sig_catch, caught, sigcatch CATCHED caught を参照。
sigignore, ignored, sig_ignore IGNORED ignored を参照。
sigmask, blocked, sig_block BLOCKED blocked を参照。
sig_block, blocked, sigmask BLOCKED blocked を参照。
size SZ プロセスの全ての書き込み可能なページがダーティ(dirty)で、スワップアウトされると仮定したときの、必要とされるスワップ空間の概算の大きさ。この数値はかなり大雑把なもののようである。
spid, lwp, tid SPID lwp を参照。
stackp STACKP プロセスのスタックの開始アドレス。
start STARTED コマンドが起動した時刻。プロセスの稼働時間が24時間以内の場合は開始時刻が”HH:MM:SS” の形式で表示される。プロセスの稼働時間が24時間を超える場合は”mmm dd” の形式で表示される。なお mmm は月を表す3文字のアルファベットで表示される。
start_time, stime START プロセスの起動時刻。
稼働開始日時が同日の場合は “HH:MM” で表示される。 例) 16:31
稼働開始日時が前日以前の同年場合は、“mmdd” で表示される。 例) 4月26
稼働開始日時が同年より前の場合は年のみが表示される。 例) 2019:MM:SS” の形式で表示される。
プロセスの稼働時間が24時間を超える場合は”mmm dd” の形式で表示される。なお mmm は月を表す3文字のアルファベットで表示される。
stime, start_time STIME start_time を参照。
stat STAT プロセスの状態コードを表示する。s, state オプションでは下記のプロセス状態コードのみを表示するが、stat オプションではそれに加えて下記の添付文字が表示されることがある。
●プロセスの状態コード
s, stat, state 出力指定子 (ヘッダ "STAT" または "S")がプロセス状態の説明のために 表示する値を以下に示す。
D: 割り込み不可能なスリープ状態。 (通常 IO 中)
R: 実行中または実行可能状態。 (実行キューにある)
S: 割り込み可能なスリープ状態。 (イベントの完了を待っている)
T: ジョブ制御シグナルまたはトレースされているために停止中の状態。
W: ページング状態。 (2.6.xx カーネルからは無効)
X: 死んだ状態。 (見えるべきではない)
Z: 終了したが親プロセスによって回収されなかった消滅した (ゾンビ)プロセス。

●添付文字
< 優先度の高いプロセス。 (他のユーザーに対して良くない)
N: 優先度の低いプロセス。 (他のユーザーに対して良い)
L: 実メモリのページをロックして利用している。 (リアルタイム処理やカスタム IO向け)
s: セッションリーダ。
l: マルチスレッド化されている。 (NPTL pthreads が行うように、CLONE_THREAD が使われている)
+: フォアグラウンドのプロセスグループに含まれている。
state, s S s を参照。
suid, svuid SUID 保存ユーザID。
suser SUSER 保存ユーザ名。表示フィールド幅が確保できない場合は保存グループIDが10進数で表示される。
svgid, sgid SVGID sgid を参照。
svuid, suid SVUID suid を参照。
sz SZ プロセスのコアイメージの物理ページサイズ。これには、テキスト・データ・スタック空間が含まれる。
thcount, nlwp THCNT プロセスが所有するカーネルスレッドの数。
tid, lwp TID lwp を参照。
time, cputime TIME 累積したCPU時間。”[dd-]hh:mm:ss” というフォーマットで表示される。
tname, tt, tty TTY 制御端末(tty)。
tt, tname, tty TT tname を参照。
tty, tname, tt TT tname を参照。
ucmd, comm, ucomm CMD comm を参照。
ucomm, comm, ucmd COMMAND comm を参照。
uid, euid UID euid を参照。
uname, euser, user USER euser を参照。
user, euser, uname USER euser を参照。
vsz, vsize VSZ プロセスの仮想メモリサイズ(KiB, 1024バイト単位)。デバイスマッピングは現在のところ除外されている。
vsize, vsz VSZ vsz を参照。
wchan WCHAN スリープ中のプロセスのカーネル関数名。プロセスが実行中の場合は “-” が表示される。プロセスがマルチスレッドで、psがスレッドを表示していない場合は ”*” が表示される。

AIXフォーマット記述子
ps は AIX のフォーマット記述子をサポートしている。 これは printf の書式コードと似たような動作をする。
例えば次のような記述が可能であり、自由度の高い表示が可能である。
ps -eo "%p %y %x %c"

下記にAIXフォーマット記述子を記載する。
AIX記述子 通常形式 ヘッダラベル
%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

使用例
ps axuw
全てのプロセスをユーザ指向の項目でワイド表示する。

ps axuw --sort -%cpu
全てのプロセスをユーザ指向の項目でワイド表示する。表示順はCPUの使用率の降順で表示する。

ps axo %cpu,%mem,comm --sort -%cpu,-%mem
CPUとメモリの使用率、および実行コマンド名を、CPUおよびメモリの降順で表示する。

ps u -C kthreadd
コマンド名が "kthreadd" のプロセスを表示する。

ps axuwf
全てのプロセスをユーザ指向のフォーマットで表示する。またプロセスを階層表示する。

ps axuw --lines 10 --headers
全てのプロセスをユーザ指向のフォーマットで表示する。10行毎にヘッダーを表示する。


最終更新日:2020/05/01

- Published By MINDKERNEL.COM -