
محلل استخدام القرص السريع جدا مكتوبة في GO.
يهدف GDU بشكل أساسي لأقراص SSD حيث يمكنها استخدام المعالجة المتوازية بالكامل. ومع ذلك ، تعمل محركات الأقراص الصلبة أيضًا ، لكن كسب الأداء ليس ضخمًا جدًا.
توجه إلى صفحة الإصدارات وقم بتنزيل الثنائي لنظامك.
باستخدام حليقة:
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) ، على سبيل المثال إذا كان الإخراج قد تم إنشاؤه إلى ملف ، أو يمكن بدء تشغيله بشكل صريح باستخدام علامة.
يقوم وضع التصدير (Flag -o ) بإخراج جميع بيانات الاستخدام مثل JSON ، والتي يمكن فتحها لاحقًا باستخدام علامة -f .
يتم حساب الروابط الصلبة مرة واحدة فقط.
قد تربى الملفات والأدلة من خلال علامة ذات حرف واحد مع المعنى التالي:
! حدث خطأ أثناء قراءة هذا الدليل.
. حدث خطأ أثناء قراءة دليل فرعي ، قد لا يكون الحجم صحيحًا.
@ الملف هو symlink أو المقبس.
H تم حساب الملف نفسه بالفعل (رابط صلب).
دليل e فارغ.
يمكن لـ GDU قراءة ملف تكوين YAML (والكتابة).
$HOME/.config/gdu/gdu.yaml و $HOME/.gdu.yaml يتم فحصها للحصول على presense من ملف التكوين افتراضيًا.
انظر القائمة الكاملة لجميع خيارات التكوين.
echo "no-color: true" >> ~/.gdu.yaml
sorting:
by: name // size, name, itemCount, mtime
order: desc
echo "change-cwd: true" >> ~/.gdu.yaml
gdu --write-config
هناك طرق تضيع كيف يمكن تلوين المحطات. بعض primitives GDU (مثل النص الأساسي) addapt إلى مخططات ألوان مختلفة ، ولكن الصف المحدد/المميز لا.
إذا لم تكن المظهر الافتراضي كافيًا ، فيمكن تغييرها في ملف التكوين ، على سبيل المثال:
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 في كثير من الأحيان.
إذا كنت تريد التحكم اليدوي في مجموعة Garbage ، فيمكنك استخدام العلم --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 (100 ألف دليل ، 400 ألف ملف) على 500 جيجابايت SSD باستخدام Hyperfine. انظر الهدف benchmark في 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 التي أنشأتها نيكيتا جولوبيف - فلطيشيون