メモリ使用量をエクセルに出してグラフで表したいなんて思いませんか?
今回はその方法を書いておきます。
topコマンドの結果をファイル出力する
topコマンドでCPUやメモリの使用量が分かります。
topコマンドの結果をファイル出力するには以下のようなコマンドになります。
$ nohup sh -c 'top -b -d 10 > test_top.txt' &
これは10秒ごとに値をファイルに出力させます。
nohupと&を使うことでバックグラウンド実行できることになります。
上記のコマンドが動いているか確認する。
ps aux | grep top
xxxx 10920 0.0 0.0 2612 596 pts/3 S 19:02 0:00 sh -c top -b -d 10 > test_top.txt
このtopコマンド実行を終わらせるには以下のコマンド、PIDを指定して止める。(この時のPIDは10920)
$ kill 10920
[1]+ Terminated nohup sh -c 'top -b -d 10 > test_top.txt'
今回はメモリの値を取得してみます。
出力したファイルから特定の値を取得する
topコマンドのメモリ使用量のところは以下のところですね。
MiB Mem : 3888.5 total, 2394.9 free, 657.0 used, 836.6 buff/cache
時間はここの行で確認できますね。
top - 19:50:52 up 3:25, 0 users, load average: 0.03, 0.09, 0.09
これを取得します。
まずは時間から。
$ grep -Eo "[0-9]{2}:[0-9]{2}:[0-9]{2}" test_top.txt
19:02:08
19:02:18
19:02:28
19:02:38
19:02:48
・・・【略】
メモリの情報の部分をとるには以下のようなコマンドになります。
$ awk '/MiB Mem/ {print $4, $8}' test_top.txt
3888.5 662.4
3888.5 663.3
3888.5 663.2
3888.5 662.7
3888.5 662.5
3888.5 663.4
3888.5 664.8
3888.5 664.1
・・・【略】
これら2つをエクセルに貼り付ければ、(「データ」の「区切り位置」でスペースのところで値を分けられます)以下のようにエクセルでグラフ化できます。