
GOで書かれた非常に高速ディスク使用アナライザー。
GDUは、主に並列処理を完全に利用できるSSDディスク用に主に意図されています。ただし、HDDも機能しますが、パフォーマンスゲインはそれほど大きくありません。
[リリース]ページにアクセスして、システムのバイナリをダウンロードしてください。
カールの使用:
curl -L https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz | tar xz
chmod +x gdu_linux_amd64
mv gdu_linux_amd64 /usr/bin/gdu
他の方法については、GDUをシステムにインストールする方法については、インストールページをご覧ください。
または、Dockerを介してGDUを直接使用できます。
docker run --rm --init --interactive --tty --privileged --volume /:/mnt/root ghcr.io/dundee/gdu /mnt/root
gdu [flags] [directory_to_scan]
Flags:
--config-file string Read config from file (default is $HOME/.gdu.yaml)
-g, --const-gc Enable memory garbage collection during analysis with constant level set by GOGC
--enable-profiling Enable collection of profiling data and provide it on http://localhost:6060/debug/pprof/
-L, --follow-symlinks Follow symlinks for files, i.e. show the size of the file to which symlink points to (symlinks to directories are not followed)
-h, --help help for gdu
-i, --ignore-dirs strings Absolute paths to ignore (separated by comma) (default [/proc,/dev,/sys,/run])
-I, --ignore-dirs-pattern strings Absolute path patterns to ignore (separated by comma)
-X, --ignore-from string Read absolute path patterns to ignore from file
-f, --input-file string Import analysis from JSON file
-l, --log-file string Path to a logfile (default "/dev/null")
-m, --max-cores int Set max cores that Gdu will use. 12 cores available (default 12)
-c, --no-color Do not use colorized output
-x, --no-cross Do not cross filesystem boundaries
--no-delete Do not allow deletions
-H, --no-hidden Ignore hidden directories (beginning with dot)
--no-mouse Do not use mouse
--no-prefix Show sizes as raw numbers without any prefixes (SI or binary) in non-interactive mode
-p, --no-progress Do not show progress in non-interactive mode
-u, --no-unicode Do not use Unicode symbols (for size bar)
-n, --non-interactive Do not run in interactive mode
-o, --output-file string Export all info into file as JSON
-r, --read-from-storage Read analysis data from persistent key-value storage
--sequential Use sequential scanning (intended for rotating HDDs)
-a, --show-apparent-size Show apparent size
-d, --show-disks Show all mounted disks
-C, --show-item-count Show number of items in directory
-M, --show-mtime Show latest mtime of items in directory
-B, --show-relative-size Show relative size
--si Show sizes with decimal SI prefixes (kB, MB, GB) instead of binary prefixes (KiB, MiB, GiB)
--storage-path string Path to persistent key-value storage directory (default "/tmp/badger")
-s, --summarize Show only a total in non-interactive mode
-t, --top int Show only top X largest files in non-interactive mode
--use-storage Use persistent key-value storage for analysis data (experimental)
-v, --version Print version
--write-config Write current configuration to file (default is $HOME/.gdu.yaml)
Basic list of actions in interactive mode (show help modal for more):
↑ or k Move cursor up
↓ or j Move cursor down
→ or Enter or l Go to highlighted directory
← or h Go to parent directory
d Delete the selected file or directory
e Empty the selected directory
n Sort by name
s Sort by size
c Show number of items in directory
? Show help modal
gdu # analyze current dir
gdu -a # show apparent size instead of disk usage
gdu --no-delete # prevent write operations
gdu <some_dir_to_analyze> # analyze given dir
gdu -d # show all mounted disks
gdu -l ./gdu.log <some_dir> # write errors to log file
gdu -i /sys,/proc / # ignore some paths
gdu -I '.*[abc]+' # ignore paths by regular pattern
gdu -X ignore_file / # ignore paths by regular patterns from file
gdu -c / # use only white/gray/black colors
gdu -n / # only print stats, do not start interactive mode
gdu -np / # do not show progress, useful when using its output in a script
gdu -nps /some/dir # show only total usage for given dir
gdu -nt 10 / # show top 10 largest files
gdu / > file # write stats to file, do not start interactive mode
gdu -o- / | gzip -c >report.json.gz # write all info to JSON file for later analysis
zcat report.json.gz | gdu -f- # read analysis from file
GOGC=10 gdu -g --use-storage / # use persistent key-value storage for saving analysis data
gdu -r / # read saved analysis data from persistent key-value storage
GDUには、インタラクティブ(デフォルト)、非対話型、エクスポートの3つのモードがあります。
TTYが検出されないとき(Go-Isattyを使用)、たとえば出力がファイルにパイプされている場合、またはフラグを使用して明示的に開始できる場合、非対話モードは自動的に開始されます。
エクスポートモード(FLAG -o )は、すべての使用データをJSONとして出力します。これは、 -fフラグを使用して後で開くことができます。
ハードリンクは一度だけカウントされます。
ファイルとディレクトリには、次の意味を持つ1文字のフラグが付いている場合があります。
!このディレクトリを読み取ったときにエラーが発生しました。
.サブディレクトリの読み取り中にエラーが発生しましたが、サイズは正しくない場合があります。
@ファイルはSymlinkまたはソケットです。
H同じファイルがすでにカウントされています(ハードリンク)。
eディレクトリは空です。
GDUはYAML構成ファイルを読み取る(および書き込み)できます。
$HOME/.config/gdu/gdu.yamlおよび$HOME/.gdu.yamlは、デフォルトで構成ファイルのプレゼンスをチェックします。
すべての構成オプションの完全なリストを参照してください。
echo "no-color: true" >> ~/.gdu.yaml
sorting:
by: name // size, name, itemCount, mtime
order: desc
echo "change-cwd: true" >> ~/.gdu.yaml
gdu --write-config
ターミナルをどのように色付けすることができるかを否定する方法があります。一部のGDUプリミティブ(基本テキストなど)アッジアップは異なるカラースキーマになりますが、選択された/強調表示された行はありません。
デフォルトの外観で十分でない場合、構成ファイルで変更できます。
style:
selected-row:
text-color: black
background-color: "#ff0000"
GDUはバックグラウンドでアイテムを削除できるため、追加の作業のためにUIをブロックしません。有効にする:
echo "delete-in-background: true" >> ~/.gdu.yaml
ディレクトリアイテムは並行して削除することもできます。これにより、削除速度が向上する可能性があります。有効にする:
echo "delete-in-parallel: true" >> ~/.gdu.yaml
GDUは、パフォーマンスとメモリの使用のバランスをとろうとします。
ホストの総自由メモリよりもGDUが使用するメモリが少ない場合、分析フェーズ中にガベージコレクションが完全に最大速度を得るために無効になります。
それ以外の場合は、GCが有効になっています。より多くのメモリが使用され、メモリが少ないほど、GCは頻繁に発生します。
Garbage Collectionを手動で制御する場合は、 --const-gc / -gフラグを使用できます。分析段階では、一定のレベルの攻撃性でゴミコレクションを実行します。その結果、分析は約25%遅くなり、メモリが約30%少なくなります。レベルを変更するには、 GOGC環境変数を設定して、ガベージコレクションが発生する頻度を指定できます。値が低い(100より)、GCがより頻繁に実行されることを意味します。より高いことは少ないことを意味します。負の数はGCを停止します。
一定のGCでGDUを実行する例ですが、デフォルトほど攻撃的ではありません。
GOGC=200 gdu -g /
GDUは、分析データをメモリのみではなく永続的なキー値ストレージに保存できます。 GDUははるかに遅くなります(約10倍)が、はるかに少ないメモリを使用する必要があります(小さなGOGCも使用する場合)。 GDUは、保存されたデータで再開することもできます。現在、BadgerDBのみがキー価値ストレージ(組み込み)としてサポートされています。
GOGC=10 gdu -g --use-storage / # saves analysis data to key-value storage
gdu -r / # reads just saved data, does not run analysis again
make install-dev-dependencies
make test
GDUは--enable-profilingフラグが設定されている場合、プロファイリングデータを収集できます。データは、url http://localhost:6060/debug/pprof/に埋め込まれたhttpサーバーを介して提供されます。
その後、EG go tool pprof -web http://localhost:6060/debug/pprof/heapを使用して、WebブラウザーのSVG画像としてヒーププロファイルを開くことができます。
Hyperfineを使用して、500 GB SSDの50Gディレクトリ(100Kディレクトリ、400Kファイル)でベンチマークが実行されました。詳細については、MakeFileのbenchmarkターゲットを参照してください。
ファイルシステムキャッシュはsync; echo 3 | sudo tee /proc/sys/vm/drop_caches 。
| 指示 | 手段] | min [s] | マックス[s] | 相対的 |
|---|---|---|---|---|
diskus ~ | 3.126±0.020 | 3.087 | 3.155 | 1.00 |
gdu -npc ~ | 3.132±0.019 | 3.111 | 3.173 | 1.00±0.01 |
gdu -gnpc ~ | 3.136±0.012 | 3.112 | 3.155 | 1.00±0.01 |
pdu ~ | 3.657±0.013 | 3.641 | 3.677 | 1.17±0.01 |
dust -d0 ~ | 3.933±0.144 | 3.849 | 4.213 | 1.26±0.05 |
dua ~ | 3.994±0.073 | 3.827 | 4.134 | 1.28±0.02 |
gdu -npc --use-storage ~ | 12.812±0.078 | 12.644 | 12.912 | 4.10±0.04 |
du -hs ~ | 14.120±0.213 | 13.969 | 14.703 | 4.52±0.07 |
duc index ~ | 14.567±0.080 | 14.385 | 14.657 | 4.66±0.04 |
ncdu -0 -o /dev/null ~ | 14.963±0.254 | 14.759 | 15.637 | 4.79±0.09 |
| 指示 | 平均[ms] | min [ms] | マックス[ms] | 相対的 |
|---|---|---|---|---|
pdu ~ | 226.6±3.7 | 219.6 | 231.2 | 1.00 |
diskus ~ | 227.7±5.2 | 221.6 | 239.9 | 1.00±0.03 |
dust -d0 ~ | 400.1±7.1 | 386.7 | 409.4 | 1.77±0.04 |
dua ~ | 444.9±2.4 | 442.4 | 448.9 | 1.96±0.03 |
gdu -npc ~ | 451.3±3.8 | 445.9 | 458.5 | 1.99±0.04 |
gdu -gnpc ~ | 516.1±6.7 | 503.1 | 527.5 | 2.28±0.05 |
du -hs ~ | 905.0±3.9 | 901.2 | 913.4 | 3.99±0.07 |
duc index ~ | 1053.0±5.1 | 1046.2 | 1064.1 | 4.65±0.08 |
ncdu -0 -o /dev/null ~ | 1653.9±5.7 | 1645.9 | 1663.0 | 7.30±0.12 |
gdu -npc --use-storage ~ | 9754.9±688.7 | 8403.8 | 10427.4 | 43.04±3.12 |
C (LTS)またはzig (安定)で記述されたNCURSESベースのツールRustで書かれたツールRustで書かれた非常に高速なツールRustで書かれたツールRustで書かれたツールNikita Golubev -Flaticonによって作成されたHDDアイコン