まずはdfで状況確認してみる。
$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/hda2 264443 120329 130459 48% / tmpfs 62712 0 62712 0% /lib/init/rw udev 10240 120 10120 2% /dev tmpfs 62712 0 62712 0% /dev/shm /dev/hda12 8546616 4406940 3705524 55% /home /dev/hda11 381138 10300 351160 3% /tmp /dev/hda9 4806904 3087488 1475232 68% /usr /dev/hda10 2885780 346920 2392272 13% /var /dev/md0 17302872 13242164 3181764 81% /home/hoge
この状態で/homeにマウントされているパーティション/dev/hda12にスペースを確保したいとする。まずはduとsortでそれぞれのディレクトリの使用量を少ない順に並べる。このとき/dev/hda12のスペース確保という観点からすれば不要な情報が含まれてしまう。その理由は/homeの下にある/home/hogeが/dev/md0からマウントされているため、単純なduでは/home/hogeの情報も拾ってしまうからだ。
# du /home | sort -k1n
このような場合はduに異なるファイルシステムのディレクトリは除外するためのオプション(-x)を付ける。このようにすることで/homeから見て別のファイルシステム、この場合は/dev/hda12に属さないものは除外される。
# du -x /home | sort -k1n
すると、/homeが属する/dev/hda12に含まれるディレクトリのみの使用量が表示される。このようにすれば、余分な情報が表示されない。/homeの使用量をチェックしたければ-xを付けてduを実行しすればよい。また、ディレクトリツリーの階層が深い場合、大量に表示されて結局どのディレクトリの使用量が多いのかわからなくなることがある。そのような場合は--max-depthを付けることで表示深さの制限をかけることが出来る。
# du -x --max-depth=1 /home | sort -k1n
例えば/homeから見た深さ1(--max-depth=1)とはそれぞれの各ユーザのホームディレクトリを意味している。これで各ユーザがホームディレクトリをどの程度使用しているかがわかる。使用量の多いユーザはに警告を出すことも簡単なはずだ。