ps 動いているプロセスの一覧を表示する
ps [オプション]試してみる
psオプションなしでは、今のターミナルから起動したプロセスだけが出ます。
ps aux | head -5全ユーザーのすべてのプロセスを、CPUやメモリの使用率つきで表示します(先頭5行だけ)。
ps -ef | head -5同じく全プロセスを、親プロセスのID(PPID)つきで表示します。
ps -ef | grep '[s]leep'sleep を探します。[s] と書くと、grep 自身の行が結果に混ざりません。
ps -u user -o pid,ppid,stat,cmdユーザー user のプロセスを、PID、親PID、状態、コマンドの列だけで表示します。
ps -C sleep -o pid,etime,cmdコマンド名が sleep のプロセスについて、PIDと起動してからの経過時間を表示します。
主なオプション
aux | BSD形式。全ユーザーの全プロセスを、ユーザー名と使用率つきで表示する(ハイフンなし) |
|---|---|
-ef | UNIX形式。全プロセスを、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 に渡せば、プロセスを終了できます。