Windows PC のディスク使用量の時系列変化を Bash on Windows 上のワンライナーで記録してみる。
とある処理でディスクの使用量がどのように変化するかを記録する必要が出てきたので、Bash on Windows でワンライナーでやってみることにします。
まずはディスク使用量といえば df コマンド。Bash on Windows で実行すると、こうなります。
$ df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 236091388 152891880 83199508 65% / data 236091388 152891880 83199508 65% /data cache 236091388 152891880 83199508 65% /cache mnt 236091388 152891880 83199508 65% /mnt none 236091388 152891880 83199508 65% /dev none 236091388 152891880 83199508 65% /run none 236091388 152891880 83199508 65% /run/lock none 236091388 152891880 83199508 65% /run/shm none 236091388 152891880 83199508 65% /run/user C: 236091388 152891880 83199508 65% /mnt/c D: 937560060 865705100 71854960 93% /mnt/d E: 12347388 10928952 1418436 89% /mnt/e root 236091388 152891880 83199508 65% /root home 236091388 152891880 83199508 65% /home
なるほど、Bash on Windows だと、Windows のドライブは C: とかで見えているわけですね。
ならば、df の出力を awk でフィルタしてみよう。こんなふうに。
$ df | awk '$1 == "C:" { print systime(),$2,$3,$4 }' 1494572754 236091388 152891884 83199504
これで UNIX秒、ディスク容量, 使用量, 空き容量がとれました。
あとは、これをずーっと実行したいので、while ループにしつつ、10秒ごとに記録するようにしてみる。
$ while : ; do df | awk '$1 == "C:" { print systime(),$2,$3,$4 }' ; sleep 10 ; done 1494572758 236091388 152891884 83199504 1494572768 236091388 152891884 83199504 1494572778 236091388 152891884 83199504
OK、こんなもんですね。あとは適当なファイルにリダイレクトすればよい。tee [ファイル名] とすれば、ファイルに保存しつつ表示してくれるので、さらによし。