
Довольно быстрое использование диска, написанное в Go.
GDU предназначен главным образом для дисков SSD, где он может полностью использовать параллельную обработку. Однако жесткие диски работают, но прирост производительности не такой большой.
Отправляйтесь на страницу релизов и загрузите двоичный файл для вашей системы.
Используя 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
Смотрите страницу установки для других способов, как установить GDU в вашу систему.
Или вы можете использовать GDU напрямую через 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 имеет три режима: интерактивный (по умолчанию), неинтерактивность и экспорт.
Неинтерактивный режим запускается автоматически, когда TTY не обнаруживается (с помощью GO-ISATTY), например, если выход перевозится в файл, или его можно явно запустить с помощью флага.
Режим экспорта (флаг -o ) выводит все данные об использовании в качестве JSON, которые могут быть позже открыты с помощью флага -f .
Жесткие ссылки учитываются только один раз.
Файлы и каталоги могут быть предварительно профиксированы с помощью флага с одним символом с следующим значением:
! Произошла ошибка при чтении этого каталога.
. Произошла ошибка при чтении подкаталогера, размер может быть неверным.
@ Файл является символом или сокетом.
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
Есть способы, как терминалы могут быть окрашены. Некоторые примитивы Gd
Если внешний вид по умолчанию недостаточно, его можно изменить в файле конфигурации, например:
style:
selected-row:
text-color: black
background-color: "#ff0000"
GDU может удалять элементы на заднем плане, не блокируя пользовательский интерфейс для дополнительной работы. Чтобы включить:
echo "delete-in-background: true" >> ~/.gdu.yaml
Элементы каталога также могут быть удалены параллельно, что может увеличить скорость удаления. Чтобы включить:
echo "delete-in-parallel: true" >> ~/.gdu.yaml
GDU пытается сбалансировать производительность и использование памяти.
Когда GDU используется меньше памяти, чем общая свободная память хоста, то сбор мусора отключается на этапе анализа полностью, чтобы получить максимальную скорость.
В противном случае GC включен. Чем больше памяти используется, и чем меньше памяти свободна, тем чаще происходит GC.
Если вы хотите ручной контроль над сбором мусора, вы можете использовать флаг --const-gc / -g . Он будет работать на сборе мусора на этапе анализа с постоянным уровнем агрессивности. В результате анализ будет примерно на 25% медленнее и будет потреблять примерно на 30% меньше памяти. Чтобы изменить уровень, вы можете установить переменную среды GOGC , чтобы указать, как часто происходит сбор мусора. Более низкое значение (чем 100) означает, что GC будет работать чаще. Более высокие средства реже. Отрицательное число остановит GC.
Пример запуска GDU с постоянным GC, но не так агрессивно, как по умолчанию:
GOGC=200 gdu -g /
GDU может хранить данные анализа для постоянного хранилища ключевых значений вместо просто памяти. GDU будет работать намного медленнее (около 10x), но он должен использовать гораздо меньше памяти (при использовании небольшого 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 . Данные предоставляются с помощью встроенного HTTP -сервера на URL http://localhost:6060/debug/pprof/ .
Затем вы можете использовать EG go tool pprof -web http://localhost:6060/debug/pprof/heap чтобы открыть профиль кучи в виде изображения SVG в вашем веб -браузере.
Цифры были выполнены в каталоге 50G (каталоги 100K, 400 тыс. Файлов) на 500 ГБ SSD с использованием гиперфины. См. benchmark Target в Makefile для получения дополнительной информации.
Кэш файловой системы был очищен с использованием sync; echo 3 | sudo tee /proc/sys/vm/drop_caches .
| Командование | Означает] | Мин [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] | Мин [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 (стабильный)Rust с интерфейсом, похожим на GDU (и NCDU)RustRust показывающий дерево, как конструкции использования дискаRust показывающий дерево, как структуры использования диска HDD значок, созданный Никитой Голубев - Flaticon