ps コマンド

動いているプロセスの一覧を見るコマンド。

私がよく使うオプションは aux

$ ps aux

メモリ使用量を表すVSZやRSSの列の単位は、キロバイト。1000バイトなのか1024バイトなのか知らんが。

あとは、特定のPIDを持つプロセスがなんのコマンドなのかを調べるために、PIDだけを指定する。

$ ps 13051

CPU占有率は、いまこの瞬間のCPU占有率ではなく、プロセスごとにそのプロセスが起動してからの平均のCPU使用率である。リアルタイムな状況を見るにはtopコマンドのほうがよい。

Java(JVM)のプロセスを見るにはjpsコマンドも使える。

HOWTO

プロセスの親子関係をツリーで表示するには

$ ps auxf

f がツリーで表示させるオプション。

-> pstree

特定の名前のプロセスをすべてkillするには

たとえば "ruby" が名前に含まれるプロセスの場合、

まず一覧を表示してkill対象を確認する。

$ ps aux | grep ruby

これだと、grep ruby しているプロセス自体も表示されることがあるので、以下のようにすると grep が含まれるプロセスを除外できる。

$ ps aux | grep ruby | grep -v grep

次にプロセスIDの一覧だけにする。

$ ps aux | grep ruby | grep -v grep | tr -s ' ' | cut -d ' ' -f2

それをkillする。

$ kill `ps aux | grep ruby | grep -v grep | tr -s ' ' | cut -d ' ' -f2`

特定のプロセスIDだけを表示するには

$ ps プロセス番号

$ ps --pid プロセス番号

と同じ。

プロセスの中のスレッドを確認するには

-L を付けると、スレッド数のカラムが増えて、さらにプロセス一覧ではなくスレッド一覧が表示される。

$ ps aux -L

m を付けると、プロセスごとにそのスレッド一覧が表示される。

$ px auxm

CPUの占有率でソートするには

psコマンドのソートのオプションがよくわからなかったので、sortコマンドを使って無理やりこんな感じ。

$ ps aux | sort -rk3

解説:

psコマンドの出力の3列目でソートするには sort -r -k 3,3 をパイプでつなげる。

CPUの使用率が同じ数字の場合に、メモリの使用率でソートしたい場合は sort -r -k 3,4 とすれば、3列目と4列目でソートしてくれる。

ただ、これをするぐらいなら、sort -r -k 3 としてしまえば、3列目が同じなら4列目、 4列目も同じなら5列目、と3列目以降のすべての列を見てくれるし、こっちのほうが2文字タイピングが少なくてよい。

さらにタイピングを短くするためにオプションをつなげてしまうことにして、最初に書いた sort -rk3 というコマンドになる。

(psコマンドのCPU占有率は、いまこの瞬間のCPU占有率ではなく、プロセスごとにそのプロセスが起動してからの平均のCPU使用率なので、 CPUの占有率でソートすること自体にあまり意味がない。いまこの瞬間のCPU占有率を見るにはtopコマンドのほうがよい)

メモリの消費量でソートするには

$ ps aux --sort -vsize
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク