Linuxで簡易的にCPUの状況をモニタリングする

linuxでCPUの状態がなんか不安定だなぁ・・・ということで、しばらく監視をすることに。
と言ってももちろん  (*・д・) ジー っと監視するんじゃなくて、しばらく自動で監視して、後で結果を見てどんな状況なのかを見よう、ってことで実施するやつです。

vmstatでやってみる

topコマンドで常時モニタリングはできるけど、今回は長時間のログを残しておきたいってことで、vmstatコマンドを使用

vmstat 10 とかすれば 10秒ごとにCPUやメモリ、swapなどの情報を見ることができる。
この情報を貯めて、ログに吐き出して、後で状況を確認しよう!という思惑。
真剣に細かく調査するというよりは、簡易的にCPUの状況が知りたかっただけなのでこれで十分。

とりあえず1分ごとに監視して、ログに吐けばいいかな、と

vmstat 60  >> vmstat.log

バックグラウンドで動かす

とりあえずこれでできるはず。終わりっ!

りょーへー
りょーへー

それやとログアウトしたら終了するやん

あ、そっか・・・。じゃあバックグラウンドで動かしっぱなしにするのはnohupを&すればいいか。

nohup vmstat 60 >> vmstat.log &

こんな感じか。はいはい。完了完了。あとはゆっくりコーヒーでも・・・

りょーへー
りょーへー

いやいや、それやと時間がわからんで

時間も入れてみるがワナにハマる

確かに・・・。これだと何時に発生したのか全くわからないので、時間も入れないと・・・。

nohup vmstat 60 | gawk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }' >> vmstat.log &

んな感じか。余裕余裕。

りょーへー
りょーへー

これやとログ出力されへんで

ぐぬぬ・・・。そうだった。awk(gawk)はバッファリングされるんだった。
なのでログには出力されないんだった。

awk(gawk) をバッファリングさせないようにするには明示的にfflush()またはsystem(“”)を呼べばいい。

nohup vmstat 60 | gawk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { fflush() }' >> vmstat.log &

とか

nohup vmstat 60 | gawk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { system("") }' >> vmstat.log &

かな。
これでとりあえず一晩ほっといて様子をみよっと。

りょーへー
りょーへー

ちなみに終了するときは”ps ax|grep vmstat” とかで見つかったプロセス番号に対して”kill プロセス番号”するんやで。

LInux IT
りょーへーをフォローする

りょーへーぶろぐ