はじめて awk をつかった。
3 秒間隔でメモリの使用状況をログに吐くコマンドを作った。
作ったコマンド#
top -b -d 5 -n 12 | awk -v 'OFS=\t' '($8 ~ /[A-Z]/){if($10>1.0) print strftime("%Y/%m/%d %H:%M:%S"),$8,$10,$12}'top -b -d 5 -n 12 バッチモードにて 5 秒おき 12 回 top コマンドを実行
awk -v ‘OFS=\t’
出力フィールドをタブ区切り($8 ~ /[A-Z]/)
top コマンドの 8 つ目(プロセスの状態)が A~Z の1文字(top コマンドのヘッダを省くための対応){if($10>1.0) print strftime("%Y/%m/%d %H:%M:%S"),$8,$10,$12}
$10(メモリ使用率)が 1.0%以上のプロセスを表示。
現在時刻、プロセス状態、メモリ使用量、プロセス名
感想#
awk は慣れれば直感的でとても便利!
このコマンドを 1 分単位で cron 実行すれば監視ができそう。
ただ、1 分間のログをまとめて awk で処理してログに出力する形になるので、個人的にいまいち。
top じゃなくて、他のコマンドでも良かったかも。。