Linux で CPU 使用率・メモリ占有率ランキングを表示する

Linux

だいぶ前に Munin 程までいかないけど、サーバー監視スクリプトを作りました。 そのスクリプトのコンセプトは「サーバーに負荷をかけている処理を特定する」というものでした。

そこで使った、現行処理の CPU 使用率・メモリ占有率ランキング表示方法を記載しておきます。 因みに以下のコマンドをシェルスクリプトで書いて監視スクリプトとしました。

■ CPU 使用率 TOP10 を表示する
ps -e aux | sort -r -k 3 | head -n 10

■ メモリ占有率 TOP10 を表示する
ps -e aux | sort -r -k 4 | head -n 10

■ 項目名がウザい場合は以下の文字列を付与する
ps --no-header

この表示だと見たくない情報も含まれたりしますorz なので…

■ CPU 使用率 TOP20 を項目名無しでかつ、整形したデータを表示する
ps --no-header -e aux | sort -r -k 3 | head -n 20 | awk '{print $1,$3,$11;};'

■ メモリ占有率 TOP20 を項目名無しでかつ、整形したデータを表示する
ps --no-header -e aux | sort -r -k 4 | head -n 20 | awk '{print $1,$4,$11;};'

因みに

$1=USER
$3=CPU

とかそういう具合です。普通に ps コマンド打ったときの並び順ですね。

更にログに落とすと…。

■CPU使用率TOP20を項目名無しでかつ、整形したデータをログに落とす
ps --no-header -e aux | sort -r -k 3 | head -n 20 | awk '{print $1,$3,$11;};' > cpu.log

■メモリ占有率TOP20を項目名無しでかつ、整形したデータをログに落とす
ps --no-header -e aux | sort -r -k 4 | head -n 20 | awk '{print $1,$4,$11;};' > mem.log

まあそれぞれのオプションは「ググれカス」ということでw awk は使えますよ~

※2009年10月6日…今更ながらコマンド間違いに気付くorz
 ソートの部分の「-kr」を「-r -k」へ変更。すみません。