Linuxコマンド辞典 duコマンド(システム管理)

ファイルのディスク使用量を表示する「du」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

引数で指定したディレクトリとディレクトリ/ファイルのサイズを計算し出力します。各ディレクトリのサイズを表示し、最後にすべての利用サイズを表示します。デフォルトはKB単位で表示します。ディレクトリを指定しない場合は作業ディレクトリを対象とします。

また、引数無しで実行した場合は、カレントパスが対象となります。

ディスクの使用量を表示する際に、管理者権限でなければ読み取れないディレクトリやファイルを指定するとエラーとなるので、管理者権限で実行したほうが無難。

書式

$ du [オプション] [ファイル名・・・]

オプション

-a
–all
すべてのファイルのサイズを表示する
-B サイズ
–block-size=サイズ
指定したサイズの倍数で表示する(B、M、Gなど)
-c
–total
すべての合計を出力する
-d 深度
–max-depth=深度
指定したディレクトリからN階層以内のサブディレクトリまでの合計を表示する
-k,
–block-size=数字
Kバイト単位で表示する
-m,
–block-size=数字
Mバイト単位で表示する
-s
–summarize
引数の合計容量のみを表示する
-h
–human-readable
読みやすいように単位をつけて表示する
-L
–dereference
シンボリックリンクがある場合は、元ファイルを計算して表示する
-S
–separate-dirs
サブディレクトリのサイズは含まない
–timeすべての最終更新時間を表示する
–exclude=パターンパターンにマッチするファイルは対象にしない
-0
–null
行末を改行の代わりにNULL文字にする
–si読みやすい単位でサイズを表示する(1000の累乗)

読みやすい単位にして使用量を表示

du -ah ディレクトリパス

-aオプションを付けるとディレクトリだけではなく、ファイルも使用量も表示できます。また、-hオプションをつけると容量を見やすい単位にして表示します。

実行結果

[root@localhost ~]# du -ah /home | head -n 10
0       /home/suna/.mozilla/extensions
0       /home/suna/.mozilla/plugins
0       /home/suna/.mozilla
4.0K    /home/suna/.bash_logout
4.0K    /home/suna/.bash_profile
4.0K    /home/suna/.bashrc
4.0K    /home/suna/.zshrc
8.0K    /home/suna/.config/pulse/118e66bceebb44e2b35426953450823a-device-volumes.tdb
12K     /home/suna/.config/pulse/118e66bceebb44e2b35426953450823a-stream-volumes.tdb
24K     /home/suna/.config/pulse/118e66bceebb44e2b35426953450823a-card-database.tdb
[root@localhost ~]# 

指定したディレクトリ以下の使用容量を表示する

実行結果

[root@localhost ~]# du /var/log/
0       /var/log/private
0       /var/log/samba/old
0       /var/log/samba
39896   /var/log/audit
0       /var/log/glusterfs
0       /var/log/chrony
0       /var/log/speech-dispatcher
0       /var/log/libvirt/qemu
0       /var/log/libvirt
0       /var/log/swtpm/libvirt/qemu
0       /var/log/swtpm/libvirt
0       /var/log/swtpm
132     /var/log/sssd
12      /var/log/cups
0       /var/log/gdm
28      /var/log/tuned
0       /var/log/qemu-ga
8052    /var/log/anaconda
16244   /var/log/httpd
144260  /var/log/
[root@localhost ~]# 

指定位置から深さ1のサブディレクトリまでを検索対象とする

実行結果

[root@localhost ~]# du -d 1 /var
5742360 /var/lib
144260  /var/log
266364  /var/cache
0       /var/adm
0       /var/db
0       /var/empty
0       /var/ftp
0       /var/games
0       /var/gopher
0       /var/local
0       /var/nis
0       /var/opt
0       /var/preserve
16      /var/spool
20      /var/tmp
0       /var/yp
0       /var/kerberos
0       /var/crash
0       /var/account
12      /var/www
1465520 /var/atlassian
7618560 /var
[root@localhost ~]# 

探索ディレクトリの総合計を出力する

-sオプションを使用することで総合計を出力することができます。

実行結果

[root@localhost ~]# du -hs /var/ /usr/ -c
7.3G    /var/
5.9G    /usr/
14G     合計
[root@localhost ~]# 

各ディレクトリの最終更新タイムを併せて出力する

実行結果

[root@localhost ~]# du -d 1 --time /var/
5742360 2022-07-15 13:35        /var/lib
144232  2022-07-15 13:35        /var/log
266364  2022-07-15 12:02        /var/cache
0       2021-10-11 09:48        /var/adm
0       2022-05-30 14:02        /var/db
0       2022-05-30 14:05        /var/empty
0       2021-10-11 09:48        /var/ftp
0       2021-10-11 09:48        /var/games
0       2021-10-11 09:48        /var/gopher
0       2021-10-11 09:48        /var/local
0       2021-10-11 09:48        /var/nis
0       2021-10-11 09:48        /var/opt
0       2021-10-11 09:48        /var/preserve
16      2022-07-15 03:29        /var/spool
20      2022-07-15 00:00        /var/tmp
0       2021-10-11 09:48        /var/yp
0       2022-05-30 13:58        /var/kerberos
0       2022-04-20 08:13        /var/crash
0       2022-05-30 14:05        /var/account
12      2022-05-30 19:14        /var/www
1465520 2022-07-15 13:35        /var/atlassian
7618532 2022-07-15 13:35        /var/
[root@localhost ~]# 

使用率が高いディレクトリを表示する

システムを運用していると特定のディレクトリの容量が肥大化する場合があるので、そのような場合は、以下のコマンドで使用率が高いディレクトリを調べることができます。duコマンドでディスク容量を抽出しsoftコマンドで容量の多い順に並べ替えして、headコマンドで上位10件を抜くといった感じです。

$ du -S [ディレクトリ] | sort -rn | head -10

実行結果

[root@localhost ~]# du -S /var/log | sort -rn | head -10
78936   /var/log
39896   /var/log/audit
16216   /var/log/httpd
8052    /var/log/anaconda
132     /var/log/sssd
28      /var/log/tuned
12      /var/log/cups
0       /var/log/swtpm/libvirt/qemu
0       /var/log/swtpm/libvirt
0       /var/log/swtpm
[root@localhost ~]#