メインコンテンツへスキップ
  1. 記事一覧/

topコマンドのログを取る

·1 分
tenn25
著者
tenn25
技術メモとボードゲーム制作の記録を綴る個人ブログ
目次

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