行いたいこと
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して推移確認