よくディスクの空き容量とか、各ディレクトリでどのくらい容量使ってるかを調べる時、duとdf使うんですが、どっちがなんだか分からなくなって、毎回ググっている事に気が付きました。恥ずかしいです。
そんなわけで、毎回ググらなくても良いように、du/dfの使い方を復習する事にしました。
目次
duとdfについて
まずは2つのマニュアルを読んでみました。
du - ファイルのディスク使用量を推定する df - ファイルシステムのディスク容量の使用状況を表示する
あ、そうだったんですね。duは「ファイルがどれくらいディスクを使ってるか」で、dfは「ファイルシステムの使用状況」なのか…これだけで判断するのは早いかもしれないけど、説明通り受け取るならば、今のディスク使用状況を確認するならdfで、どのファイルがディスクを圧迫してるのか調べるのはduと覚えとけば良いでしょうかね?
早速使うシチュエーションを考えながらコマンドを見ていこうと思います。
ディスクの使用率を調べる
先程の話通りに行けば、とりあえずdf打っとけば確認出来そうですね。今回は手元のRaspberry Piで確認します。ちなみに我が家ではRaspberry Pi大活躍してます。
root@raspberry:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 29863804 1748544 26876580 7% / devtmpfs 468148 0 468148 0% /dev tmpfs 472756 816 471940 1% /dev/shm tmpfs 472756 36624 436132 8% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 472756 0 472756 0% /sys/fs/cgroup /dev/mmcblk0p1 41322 21386 19937 52% /boot tmpfs 94552 0 94552 0% /run/user/1001 /dev/sdc1 2930266328 2171480224 758786104 75% /mnt/hdd1
どの程度ディスクが使われているかを確認するだけであれば、これだけでもわかりますが、折角なのでオプション使って見やすくしていきましょう。
hオプション
hオプションでは、単位を見やすい形にしてくれます。早速オプションつけてコマンド実行してみます。
root@raspberry:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/root 29G 1.7G 26G 7% / devtmpfs 458M 0 458M 0% /dev tmpfs 462M 816K 461M 1% /dev/shm tmpfs 462M 36M 426M 8% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 462M 0 462M 0% /sys/fs/cgroup /dev/mmcblk0p1 41M 21M 20M 52% /boot tmpfs 93M 0 93M 0% /run/user/1001 /dev/sdc1 2.8T 2.1T 724G 75% /mnt/hdd1
これだけでオプション無しよりだいぶ見やすくなりますね。
Tオプション
大文字Tオプションをつけると各ファイルシステムタイプを表示してくれます。先程のhオプションと一緒に使ってみましょう。
root@raspberry:~# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/root ext4 29G 1.7G 26G 7% / devtmpfs devtmpfs 458M 0 458M 0% /dev tmpfs tmpfs 462M 816K 461M 1% /dev/shm tmpfs tmpfs 462M 36M 426M 8% /run tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 462M 0 462M 0% /sys/fs/cgroup /dev/mmcblk0p1 vfat 41M 21M 20M 52% /boot tmpfs tmpfs 93M 0 93M 0% /run/user/1001 /dev/sdc1 fuseblk 2.8T 2.1T 724G 75% /mnt/hdd1
これでファイルシステムタイプを確認すれば、特定のファイルシステムのみを"t"オプションで表示出来ます。
[root@raspberry:~# df -ht ext4 Filesystem Size Used Avail Use% Mounted on /dev/root 29G 1.7G 26G 7% /
他にもiオプションでinodeの情報を表示出来たりもするので、–help見ながら確認して見てください。
どのファイル(ディレクトリ)がディスクを圧迫しているのか調べる
dfコマンドでディスクの使用率を調べたら、次はどのディレクトリのなんのファイルがディスクを使用しているのか調べる必要があります。今回は例として「root以下でディスク使用率の高いファイルを特定する」というのを目標に探していきます。まずここで使用するオプションを紹介します。
sオプション
ディレクトリの総計を表示します。各ディレクトリの使用状況を調べるにはぴったりです。これだけだと若干見にくいので、hオプションで見やすい単位をくっつけます。
# du -hs /usr/local/ 128M /usr/local/
xオプション
ここで反射的に/以下でduコマンドをかけると、外付けHDDをマウントしている場合、死ぬほど時間がかかります。あくまでroot以下を調べることが目的なので、xコマンドを使用して別のファイルシステムのディレクトリを除外します。
root@raspberry:~# du -sh /* -x |sort -nr du: cannot access ‘/proc/31745/task/31745/fd/3: No such file or directory du: cannot access ‘/proc/31745/task/31745/fdinfo/3: No such file or directory du: cannot access ‘/proc/31745/fd/3: No such file or directory du: cannot access ‘/proc/31745/fdinfo/3: No such file or directory 850M /usr 460M /var 257M /lib 52K /nohup.out 42M /opt 40M /root 36M /run 22M /boot.bak 21M /boot 16K /lost+found 14M /home 8.1M /bin 7.4M /sbin 4.6M /etc 4.0K /srv 4.0K /mnt 4.0K /media 2.7M /tmp 0 /sys 0 /proc 0 /dev
後は使用量の高いディレクトリの階層を下っていけば、サイズの大きいファイルを特定出来るかと思います。
もっと効率的で有用な使い方あると思いますが、個人的にはdfとduの区別がついて、ファイルの調査が出来るようになったので、とりあえず良しとします。