utte

ps 動いているプロセスの一覧を表示する

ps [オプション]

試してみる

主なオプション

auxBSD形式。全ユーザーの全プロセスを、ユーザー名と使用率つきで表示する(ハイフンなし)
-efUNIX形式。全プロセスを、PPIDつきで表示する
-u ユーザー指定したユーザーのプロセスだけを表示する
-C 名前コマンド名が一致するプロセスだけを表示する
-o 列,列表示する列を指定する(pid、ppid、stat、cmd、%cpu、%mem など)
--forest親子関係を木の形で表示する
--sort=キー並べ替える。--sort=-%mem でメモリ使用率の大きい順

解説

ps は「その瞬間」の一覧

ps は実行した瞬間のプロセスの状態を1回だけ表示します。刻々と変わる様子を見続けたいときは top を使います。

2つの書き方

ps aux と ps -ef は、どちらも全プロセスを表示しますが、列が違います。aux(ハイフンなし)はBSD形式で、%CPU や %MEM が出ます。-ef はUNIX形式で、親プロセスのID(PPID)が出ます。試験では両方の形が出るので、ハイフンの有無が違うものだと覚えておきましょう。

主な列の意味

列 意味
PID プロセスID
PPID 親プロセスのID
TTY 接続している端末。? は端末なし
STAT 状態
TIME 使ったCPU時間

STAT の先頭の文字は、R が実行中、S がスリープ(待機中)、D が割り込み不可の待機、T が停止中、Z がゾンビです。s はセッションリーダー、+ はフォアグラウンドのプロセスを表します。

特定のプロセスを探す

ps -ef | grep 名前 はよく使いますが、grep 自身も結果に出てしまいます。grep '[s]leep' のように1文字を括弧で囲むと避けられます。名前で探すだけなら、pgrep のほうが簡単です。出てきた PID を kill に渡せば、プロセスを終了できます。

関連するコマンド

LinuC 101の出題範囲