topコマンドをcronで仕込みたい

行いたいこと

sysstatでCPUが一時的に高騰していることが分かった。
しかし、何がリソース喰っているのか分からなかった。
そのため、cronで top の実行結果を継続的に保管したい。

実施した内容

crontabに仕掛けた内容
*/1 * * * * root top -b -d 1 -n 1 > /var/log/top/result.txt_`date "+\%Y\%m\%d_\%H\%M\%S"`
補記事項
  • 事前に/var/log/topというフォルダを穴掘り
  • そのフォルダに年月日時分秒を付与したファイルが1分当たりで生成
  • オプションの内訳

  ・-b:バッチモードで実行
  ・-d:実行間隔[秒](今回は1回実行なので意味は無い)
  ・-n:実行回数

  • crontabで書く際には、dateの出力フォーマットに使う%は\でエスケープする必要有
  • 自身の環境では1日で300MB位使っていたので、ログローテート or 不要時は停止が必須

生成されたファイルの使い道

  • 串刺しで確認して、やばそうな時間帯を見つける(sysstat側で見てもいいけど)
  • その後、該当時間のファイルの前後などをちまちま確認
  • 対象のPIDなどをキーにgrepして推移確認