
Analisis Penggunaan Disk Cukup Cepat Ditulis Dalam Go.
GDU dimaksudkan terutama untuk disk SSD di mana ia dapat sepenuhnya memanfaatkan pemrosesan paralel. Namun HDD juga bekerja, tetapi perolehan kinerjanya tidak terlalu besar.
Kepala untuk halaman rilis dan unduh biner untuk sistem Anda.
Menggunakan Curl:
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
Lihat halaman instalasi untuk cara lain cara menginstal GDU ke sistem Anda.
Atau Anda dapat menggunakan GDU langsung melalui Docker:
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 memiliki tiga mode: interaktif (default), non-interaktif dan ekspor.
Mode non-interaktif dimulai secara otomatis ketika TTY tidak terdeteksi (menggunakan Go-isatty), misalnya jika output sedang disalurkan ke file, atau dapat dimulai secara eksplisit dengan menggunakan bendera.
Mode Ekspor (Bendera -o ) Output semua data penggunaan sebagai JSON, yang kemudian dapat dibuka menggunakan bendera -f .
Tautan keras dihitung hanya sekali.
File dan direktori dapat diawali dengan bendera satu karakter dengan makna berikut:
! Terjadi kesalahan saat membaca direktori ini.
. Terjadi kesalahan saat membaca subdirektori, ukuran mungkin tidak benar.
@ File adalah symlink atau soket.
H file yang sama sudah dihitung (tautan keras).
e Direktori kosong.
GDU dapat membaca (dan menulis) file konfigurasi YAML.
$HOME/.config/gdu/gdu.yaml dan $HOME/.gdu.yaml diperiksa untuk presensi file konfigurasi secara default.
Lihat daftar lengkap semua opsi konfigurasi.
echo "no-color: true" >> ~/.gdu.yaml
sorting:
by: name // size, name, itemCount, mtime
order: desc
echo "change-cwd: true" >> ~/.gdu.yaml
gdu --write-config
Ada cara -cara WAST bagaimana terminal bisa diwarnai. Beberapa primitif GDU (seperti teks dasar) addapt ke skema warna yang berbeda, tetapi baris yang dipilih/disorot tidak.
Jika tampilan default tidak cukup, itu dapat diubah dalam file konfigurasi, misalnya:
style:
selected-row:
text-color: black
background-color: "#ff0000"
GDU dapat menghapus item di latar belakang, sehingga tidak memblokir UI untuk pekerjaan tambahan. Untuk mengaktifkan:
echo "delete-in-background: true" >> ~/.gdu.yaml
Item direktori juga dapat dihapus secara paralel, yang dapat meningkatkan kecepatan penghapusan. Untuk mengaktifkan:
echo "delete-in-parallel: true" >> ~/.gdu.yaml
GDU mencoba menyeimbangkan kinerja dan penggunaan memori.
Ketika lebih sedikit memori digunakan oleh GDU daripada total memori bebas host, maka pengumpulan sampah dinonaktifkan selama fase analisis sepenuhnya untuk mendapatkan kecepatan maksimum.
Jika tidak, GC diaktifkan. Semakin banyak memori yang digunakan dan semakin sedikit memori gratis, semakin sering GC akan terjadi.
Jika Anda ingin kontrol manual atas pengumpulan sampah, Anda dapat menggunakan bendera --const-gc / -g . Ini akan menjalankan pengumpulan sampah selama fase analisis dengan tingkat agresivitas yang konstan. Akibatnya, analisis akan sekitar 25% lebih lambat dan akan mengkonsumsi sekitar 30% lebih sedikit memori. Untuk mengubah level, Anda dapat mengatur variabel lingkungan GOGC untuk menentukan seberapa sering pengumpulan sampah akan terjadi. Nilai yang lebih rendah (dari 100) berarti GC akan berjalan lebih sering. Cara yang lebih tinggi lebih jarang. Jumlah negatif akan menghentikan GC.
Contoh menjalankan GDU dengan GC konstan, tetapi tidak begitu agresif sebagai default:
GOGC=200 gdu -g /
GDU dapat menyimpan data analisis ke penyimpanan nilai kunci yang persisten, bukan hanya memori. GDU akan berjalan jauh lebih lambat (sekitar 10x) tetapi harus menggunakan lebih sedikit memori (saat menggunakan GOGC kecil juga). GDU juga dapat dibuka kembali dengan data yang disimpan. Saat ini hanya badgerdb yang didukung sebagai penyimpanan nilai kunci (tertanam).
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 dapat mengumpulkan data profil ketika bendera- --enable-profiling diatur. Data disediakan melalui server http tertanam pada url http://localhost:6060/debug/pprof/ .
Anda kemudian dapat menggunakan EG go tool pprof -web http://localhost:6060/debug/pprof/heap untuk membuka profil heap sebagai gambar SVG di browser web Anda.
Tolok ukur dilakukan pada direktori 50g (direktori 100 ribu, file 400k) pada 500 GB SSD menggunakan hyperfine. Lihat target benchmark di Makefile untuk info lebih lanjut.
Cache sistem file telah dihapus menggunakan sync; echo 3 | sudo tee /proc/sys/vm/drop_caches .
| Memerintah | Cara] | Min [s] | Max [S] | Relatif |
|---|---|---|---|---|
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 |
| Memerintah | Berarti [MS] | Min [ms] | Max [MS] | Relatif |
|---|---|---|---|---|
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) PURUL ATAU zig (Stabil)Rust dengan antarmuka mirip dengan GDU (dan NCDU)RustRust menunjukkan pohon seperti struktur penggunaan diskRust menunjukkan pohon seperti struktur penggunaan disk Ikon HDD yang dibuat oleh Nikita Golubev - Flaticon