Archive for 2010/1/7
一見すごく簡単そうなのに、ちょっとはまってしまったので記録。
システムがなんか変な時に、topコマンドをまず見てみる。
でも、遅い時がわかっているが、自分がその時にtopコマンドを実行できないなどという場合には、
topコマンドをバッチモードでしかも、cronで定期的に動かせばいい。
マニュアルを
http://www.linux.or.jp/JM/html/procps/man1/top.1.html
見ればわかるが、覚書のために自分が使う手順を載せておく。
top -n 1 -b
これで1回限り、TOPコマンドの結果が出力される。
したがって、これをcronで起動させればいいので、
*/10 * * * * top -n 3 -b > /tmp/top_`date +%H%M.txt`
のようにしておけば、10分毎に3回のTOPコマンドの結果を/tmpの下に保存しておける。
ちなみに、
`date +%H%M`
としているのは、あまり日ごとの結果を取っておいてもしかたがないとおもったので、
毎日同じファイルに上書きするためです。
ところが、あれ!?
書き出されない。
/var/log/message
をみると
top -n 3 -b > /tmp/top_`date +
ってなぜか、+以降表示されていない。
http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html
をみると、”%”に特別な意味があるらしい。
“+”から特別な意味があるらしいとよんでしまってしまったので、ちょっとはまった。
次に、きちんとファイルはできたが中身がない。。。
しょうがないので、標準エラーを標準入力に出力されるようにしたら・・・・
TERMの変数がないとのこと。
結局、きちんと動くようにしたものは
*/10 * * * * export TERM=vt100;top -n 1 -b > /tmp/top.`date +\%H\%M`.txt 2>&1
これです。
結果でから問題が毎回見つかるようなプロセスがあれば、
さらに、プロセスIDから/proc/[プロセスID]の下を見ていけばもっと詳細な情報がわかる。
まあ、ここから先は実際に問題がtopコマンドで見れたら書いていくと思います。


