Tenn25 Blog
topコマンドのログを取る
05.12.20181 Min Read — In others

はじめて 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 じゃなくて、他のコマンドでも良かったかも。。

Tags:  Linux