ابزار کاربر

ابزار سایت


terminal:d:how-to-find-the-size-of-a-directory-in-linux

دستور du ( نمایش اندازه دایرکتوری ها و فایل ها )

دستور 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– استفاده نمایید.

terminal/d/how-to-find-the-size-of-a-directory-in-linux.txt · آخرین ویرایش: 2019/01/04 15:51 توسط phoenix