دستور du
مخفف Disk Usage
است دستوری برای نشان دادن حجم دایرکتوری ها و فایل های درون دایرکتوری هاست. اگر بدون سوئیچ و پاراکتری استفاده شود حجم (میزان استفاده از دیسک) دایرکتوری ها و فایل های درون دایرکتوری جاری را نشان میدهد. معمولا خروجی دستور زیاد است پس بهتر است از دستور less برای صفحه بندی خروجی استفاده کنیم شکل کلی دستور بصورت زیر است.
du OPTIONS /path/to/dir du OPTIONS /path/to/file
خط اول دستورهای فوق به یک دایرکتوری ختم میشود و حجم تمامی فایلها و دایرکتوری های درون آن دایرکتوری بصورت سلسله مراتبی (درختی) را نشان میدهد. اگر هیچ گزینه یا سوئیچ بکار نرود و مسیری هم تعیین نشود بصورت پیش فرض دایرکتوری جاری در نظر گرفته میشود که به دو صورت زیر استفاده میشود علامت نقطه در خط دوم نشانگر دایرکتوری جاری است.
du | less du . | less
du
داده ها را بر اساس block
هایی از حجم داده ها نشان میدهد که پیش فرض ۱۰۲۴ بایت است. دو سوئیچ k
- و b-
خروجی را بر اساس کیلوبایت و بایت نشان میدهد چند مثال زیر:
du -k /etc | less du -b /etc | less
البته باید برای فهرست کردن حجم دایرکتوری ها و فایل های درون آنها باید مجوز خواندن بر روی آن فایل را داشته باشید که در صورت عدم داشتن مجوز خطای Can not read directory
نشان داده میشود. بطور مثال برخی از دایرکتوری های درون etc/
فقط برای root
مجوز دارند پس مانند خروجی زیر یک کاربر معمولی خطا را دریافت میکند
:du: cannot read directory '/etc/grub.d': Permission denied du: cannot read directory '/etc/sssd': Permission denied du: cannot read directory '/etc/firewalld': Permission denied du: cannot read directory '/etc/lvm/archive': Permission denied du: cannot read directory '/etc/lvm/backup': Permission denied du: cannot read directory '/etc/lvm/cache': Permission denied du: cannot read directory '/etc/audit': Permission denied du: cannot read directory '/etc/ipsec.d': Permission denied du: cannot read directory '/etc/audisp': Permission denied du: cannot read directory '/etc/cups/ssl': Permission denied du: cannot read directory '/etc/openvpn/server': Permission denied du: cannot read directory '/etc/openvpn/client': Permission denied du: cannot read directory '/etc/sudoers.d': Permission denied du: cannot read directory '/etc/polkit-1/localauthority': Permission denied du: cannot read directory '/etc/polkit-1/rules.d': Permission denied du: cannot read directory '/etc/dhcp': Permission denied du: cannot read directory '/etc/pki/rsyslog': Permission denied du: cannot read directory '/etc/vmware-tools/GuestProxyData/trusted': Permission denied
معمولا اعداد خروجی که یا برحسب بایت - کیلوبایت و مگابایت میباشند غیرقابل درک هستند مثلا عدد بر حسب کیلوبایت عدد ۱۰۶۶۴ است و قابل درک یا خوانا نیست. برای همین از سوئیچ h-
استفاده میکنیم که از کاراکترهای k
برای کیلوبایت و m
برای مگابایت استفاده میکند.
du -h /etc|less
بخشی از خروجی دستور بالا
8.0K /etc/cron.daily 4.0K /etc/egl/egl_external_platform.d 8.0K /etc/egl 16K /etc/gssproxy 8.0K /etc/dnfdragora 4.0K /etc/krb5.conf.d 4.0K /etc/grub.d 12K /etc/modprobe.d 24K /etc/bash_completion.d 12K /etc/rwtab.d 4.0K /etc/sssd 4.0K /etc/modules-load.d 8.0K /etc/gss/mech.d 12K /etc/gss 16K /etc/default 4.0K /etc/NetworkManager/system-connections 32K /etc/NetworkManager/VPN 4.0K /etc/NetworkManager/dispatcher.d/pre-up.d 4.0K /etc/NetworkManager/dispatcher.d/no-wait.d 4.0K /etc/NetworkManager/dispatcher.d/pre-down.d 36K /etc/NetworkManager/dispatcher.d
du
بصورت پیش فرض فقط حجم را برای دایرکتوری ها نشان میدهد یعنی حجم کلی یک دایرکتوری بر اساس فایلها و دایرکتوری های درون آن بصورت سلسله مراتبی نشان داده میشود و اگر بخواهید حجم یک فایل را ببینید یا باید مسیر منتهی به فایل را مانند دومین خط از اولین مثال ببینید یا اینکه از سوئیچ a- استفاده کنید تا هم حجم دایرکتوری ها و هم حجم فایل نشان داده شوند.
du -ka /etc|less du -ba /etc |less du -ha /etc |less
خروجی du
را با و بدون a-
مقایسه کنید.
خروجی دستور du
بصورت پیش فرض تنها حجم دایرکتورها را نشان میدهد. حجم هر دایرکتوری را جدا از دایرکتوری دیگر نشان میدهد. سوئیچ s- بصورت خلاصه شده مجموع حجم یک دایرکتوری را نشان میدهد.
du -sh /etc
خروجی دستور بالا
[root@phoenix phoenix]# du -sh /etc 23M /etc
البته میتوانید از سوئیچ بکار رفته در دستورات زیر برای نشان دادن همزمان حجم بیش از یک دایرکتوری ( یک مسیر) استفاده کنید:
du -k /etc /home du -ka /etc /home du -b /etc /home du -ba /etc /home du -h /etc /home du -ha /etc /home du -sh /etc /home
سوئیچ c- نیز مانند s- مجموع کل حجم را نشان میدهد ولی در خروجی c- مانند قبل لیستی از تمامی فایل ها به همراه حجم شان نشان داده میشود ولی خروجی s- تنها حجم کل را نشان میدهد حجم کل در c- در انتهای لیست چاپ می شود.
du -ch /etc|less
خروجی سوئیچ های s- و c- را با هم مقایسه کنید.
سوئیچ exclude– برای زمانی استفاده میشود که میخواهید حجم یک دایرکتوری را پیدا کنید و لی برخی از فرمت ها مانند txt,pdf
و یا mp3
ها در نظر گرفته نشوند(تمامی فایلها جز فرمت های :txt,pdf,mp3):
du -h --exclude='*pdf' /home du -h --exclude='*.mp3' /home du -h --exclude='*pdf,*.mp3' /home
جهت مشاهده محتویات دیسک که تغییرات زمان را نیز نمایش دهد از سوئیچ time– استفاده نمایید.