vmstatで時刻を表示する
sarコマンドを実行すると、先頭に時刻を表示する。
# sar 1 Linux 3.2.0-4-amd64 (linux) 2014年02月14日 _x86_64_ (8 CPU) 20時17分02秒 CPU %user %nice %system %iowait %steal %idle 20時17分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00 20時17分04秒 all 0.00 0.00 0.00 0.00 0.00 100.00
vmstatでは時刻を表示しない。
# vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 704064 136996 88860 0 0 0 0 4 4 0 0 100 0 0 0 0 704064 136996 88860 0 0 0 0 57 31 0 0 100 0
vmstatでもsar同様に時刻を表示させたかったので調べていたら、以下のようにすれば良いことが分かった。
# vmstat 1 | awk '{print strftime("%H:%M:%S"), $0; fflush()}' 20:25:32 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 20:25:32 r b swpd free buff cache si so bi bo in cs us sy id wa 20:25:32 1 0 0 703740 136996 88864 0 0 0 0 4 4 0 0 100 0 20:25:33 0 0 0 703864 136996 88864 0 0 0 0 55 31 0 0 100 0
キモはfflushでバッファしないようにしていること。これをしておかないと、ファイルにリダイレクトしている時、ctrl+cで停止してもバッファされている分がファイルに出力されなくなる。開始数秒でctrl+cで停止すると、なぜかファイルサイズが0バイトで偉く悩んだ。