はじめに
ディスク使用量を確認したい時は、まず df コマンドを使うことが多い。
ただ、マウントポイントが多い環境だと一覧が少し見づらく感じることがある。
今回は、df の代替としてよく名前が挙がる duf コマンドを使ってみる。duf は Disk Usage/Free Utility の略で、ディスク使用量を見やすく表示してくれるツールである。
色付きのバー表示や、出力列の絞り込み、JSON 出力などもできるので、普段の確認にもスクリプト用途にも使いやすそうだった。
環境
Windows 11 Professional
WSL2 Ubuntu 24.04 LTS
duf 0.8.1-1ubuntu0.24.04.3dufのインストール
Ubuntu 24.04 では apt でそのままインストールできた。
sudo apt-get update
sudo apt-get install -y dufログ
sudo apt-get install -y duf
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
duf
0 upgraded, 1 newly installed, 0 to remove and 55 not upgraded.
Need to get 900 kB of archives.
After this operation, 2,351 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 duf amd64 0.8.1-1ubuntu0.24.04.3 [900 kB]
Fetched 900 kB in 3s (341 kB/s)
Selecting previously unselected package duf.
(Reading database ... 22005 files and directories currently installed.)
Preparing to unpack .../duf_0.8.1-1ubuntu0.24.04.3_amd64.deb ...
Unpacking duf (0.8.1-1ubuntu0.24.04.3) ...
Setting up duf (0.8.1-1ubuntu0.24.04.3) ...
Processing triggers for man-db (2.12.0-4build2) ...バージョン確認
duf --versionduf (built from source)Ubuntu パッケージ版でも上記のような表示だった。
パッケージのバージョン自体は apt-cache policy duf で 0.8.1-1ubuntu0.24.04.3 を確認できた。
dufを使ってみる
基本的な使い方
まずは何も付けずに実行する。
dufduf はデバイス種別ごとにまとまった表で表示され、SIZE, USED, AVAIL, USE%, TYPE, FILESYSTEM が見やすく並ぶ。USE% はバー付きで表示されるので、どこが逼迫しているかが直感的に分かりやすい。
例えばこの環境では、ローカルデバイスについて以下のような情報が確認できた。
MOUNTED ON SIZE USED AVAIL USE% FILESYSTEM
/etc/hostname 1006.9G 182.5G 773.1G 18.1% /dev/sde
/etc/hosts 1006.9G 182.5G 773.1G 18.1% /dev/sde
/etc/resolv.conf 1006.9G 182.5G 773.1G 18.1% /dev/sde
/home/vscode/.ssh 1006.9G 188.6G 767.1G 18.7% /dev/sdg
/var/lib/docker 1006.9G 182.5G 773.1G 18.1% /dev/sde
/vscode 1006.9G 182.5G 773.1G 18.1% /dev/sde
/workspaces/blog-hugo 1006.9G 188.6G 767.1G 18.7% /dev/sdg特定のパスだけ確認する
特定のディレクトリがどのファイルシステム上にあるかを確認したい時は、対象パスを引数に渡せる。
duf /workspaces/blog-hugo╭──────────────────────────────────────────────────────────────────────────────────────────╮
│ 1 local device │
├────────────────────┬─────────┬────────┬────────┬─────────────────────┬──────┬────────────┤
│ MOUNTED ON │ SIZE │ USED │ AVAIL │ USE% │ TYPE │ FILESYSTEM │
├────────────────────┼─────────┼────────┼────────┼─────────────────────┼──────┼────────────┤
│ /workspaces/blog-h │ 1006.9G │ 188.6G │ 767.1G │ [#.........] 18.7% │ ext4 │ /dev/sdg │
│ ugo │ │ │ │ │ │ │
╰────────────────────┴─────────┴────────┴────────┴─────────────────────┴──────┴────────────╯df -h /workspaces/blog-hugo のように単一パスを確認したい時にも、そのまま置き換えて使いやすい。
よく使いそうなオプション
duf --help で確認できた主なオプションは以下。
| オプション | 説明 |
|---|---|
--only | 表示するデバイス種別を絞る |
--hide | 指定したデバイス種別を非表示にする |
--output | 出力列を指定する |
--sort | 列を指定してソートする |
--inodes | ブロック使用量の代わりに inode を表示する |
--json | JSON 形式で出力する |
例えば、ローカルデバイスだけに絞るなら以下。
duf --only local特定の列だけを見たいなら以下。
duf --output mountpoint,size,used,avail,usage,filesysteminode使用状況を見る
容量は余っていても inode が足りなくなることがあるので、--inodes はわりと便利そうだった。
duf --inodes /workspaces/blog-hugoMOUNTED ON INODES IUSED IAVAIL IUSE% TYPE FILESYSTEM
/workspaces/blog-hugo 67108864 1514710 65594154 2.3% ext4 /dev/sdgJSON形式で出力する
スクリプトや監視用途なら --json も使える。
duf --json[
{
"device": "overlay",
"device_type": "local",
"mount_point": "/",
"fs_type": "overlay",
"type": "",
"opts": "rw,relatime",
"total": 1081101176832,
"free": 830158295040,
"used": 195950526464
}
]すべての項目が機械的に扱いやすい形で出るので、あとで jq などに渡して加工しやすい。
dfコマンドとの比較
duf は df をそのまま置き換えるというより、普段の確認を見やすくしてくれるコマンドという印象だった。
よく使う観点で違いをまとめる。
| 観点 | df | duf |
|---|---|---|
| 標準搭載 | ほぼ標準で入っている | 追加インストールが必要なことがある |
| 見やすさ | シンプルで最小限 | 表形式で見やすく、バー表示もある |
| 出力の絞り込み | オプションはあるが少し素朴 | --only, --hide, --output で柔軟 |
| inode表示 | df -i | duf --inodes |
| JSON出力 | なし | duf --json が使える |
| スクリプト用途 | 伝統的で扱いやすい | JSON が欲しいなら便利 |
単一パスを確認する場合
df だと以下。
df -h /workspaces/blog-hugoFilesystem Size Used Avail Use% Mounted on
/dev/sdg 1007G 189G 768G 20% /workspaces/blog-hugoduf だと以下。
duf /workspaces/blog-hugoMOUNTED ON SIZE USED AVAIL USE% TYPE FILESYSTEM
/workspaces/blog-hugo 1006.9G 188.6G 767.1G 18.7% ext4 /dev/sdgdf は軽く確認したい時に十分便利で、出力も短くて安定している。
一方 duf はファイルシステム種別や見やすい列構成も一緒に確認できるのが良い。
どちらを使うか
自分としては以下の使い分けになりそうだった。
- とりあえず最小限で確認したい時は
df - 普段の確認を見やすくしたい時は
duf JSON出力やフィルタリングを使いたい時はduf- どの環境でも確実に使えるコマンドが欲しい時は
df
参考
muesli / duf
https://github.com/muesli/dufUbuntu Packages - duf
https://packages.ubuntu.com/search?keywords=duf
おわりに
duf は df より高機能で、特に一覧の見やすさが良かった。
マウントポイントが多い環境だと、バー表示やデバイス種別ごとのまとまりがかなり見やすい。
もちろん、標準搭載されていてどこでも使えるのは df の強みなので、普段は df、少し丁寧に見たい時は duf という使い分けでも十分便利そうだった。JSON 出力もできるので、シェルスクリプトや簡単な監視用途でも試してみたい。