محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش دیدن ظرفیت دیسک و دایرکتوری در لینوکس با دستور df و du

امروزه شما می توانید به راحتی با استفاده از ابزارهای گرافیکی اطلاعات خوبی در خصوص میزان استفاده از دیسک ها در سیستم عامل لینوکس به دست بیاورید اما همیشه برای شما محیط های دسکتاپ لینوکس وجود ندارد که بخواهید از آنها استفاده کنید ، دو دستور df و du دستوراتی هستند که اطلاعات بسیار خوبی در خصوص دیسک ها در اختیار شما قرار می دهند. با استفاده از این دستورات نه تنها شما می توانید اطلاعات خوبی در خصوص میزان فضای خالی موجود بر روی فایل سیستم های mount شده به دست بیاورید بلکه می توانید میزان فضای اشغال شده توسط هر یک از دایرکتوری های موجود در هر فایل سیستم را نیز بصورت مجزا مشاهده کنید. در این مقاله در ITPRO می خواهیم به بررسی تفاوت دو دستور معروف du و df در این خصوص بپردازیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

معرفی دستور df در لینوکس

دستور df مخفف کلمه های disk free است و میزان فضای مورد استفاده در کلیه فایل سیستم های موجود را که mount شده اند را به شما نمایش می دهد. در پایین خروجی دستور df بدون هیچ پارامتر را مشاهده می کنید ، اگر نام فایل سیستم شما بصورت یک آرگومان وارد شود یا به شکل //dev//sdb1 نمایش داده شود فقط اطلاعات مربوط به همان فایل سیستم در خروجی نمایش داده خواهد شد :

[root@localhost ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  18348032 4086176  14261856  23% /
devtmpfs                  1925448       0   1925448   0% /dev
tmpfs                     1934520     148   1934372   1% /dev/shm
tmpfs                     1934520    9060   1925460   1% /run
tmpfs                     1934520       0   1934520   0% /sys/fs/cgroup
/dev/sda1                  508588  120876    387712  24% /boot
[root@localhost ~]#

دستور بالا اطلاعات کلیه فایل سیستم های mount شده را نمایش می دهد ، اگر بخواهیم فقط اطلاعات استفاده مربوط به dev/sda1 را مشاهده کنیم بایستی دستور را به شکل زیر وارد کنیم تا خروجی مشخص تر شود :

[root@localhost ~]# df /dev/sda1
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sda1         508588 120876    387712  24% /boot
[root@localhost ~]#

ساختار خروجی دستور df به این شکل است که در سطون اول که به شکل filesystem مشخص شده است شما اسم دستگاه ذخیره سازی را مشاهده می کنید ، برای مثال شما هارد دیسکی به صورت //dev//sda1 یا یک پارتیشن با این اسم دارید ، قسمت دوم یا ستون دوم اندازه فایل سیستم را در قالب کیلوبایت به شما نمایش می دهد. ستون سوم و ستون چهارم میزان فضای استفاده شده و همچنین میزان فضای موجود برای استفاده بر روی سیستم و قسمت پنچم هم همه این موارد را در قالب درصد به شما نمایش می دهد. آخرین ستون که بصورت Mounted on نمایش داده شده است مسیری را نمایش می دهد که فایل سیستم شما در آن mount یا به سیستم معرفی شده است. یکی از نقاط ضعفی که در خروجی پیشفرض دستور df مشهود است استفاده از واحد کیلوبایت برای نمایش میزان فضا است که این واحد برای ما کمی خواندن اعداد را سخت می کند ، با استفاده از پارامتری به شکل h- در همین دستور می توانید ظرفیت موجود را به شکل بهتری در قالب گیگابایت و مگابایت مشاهده کنید ، h مخفف human readable یا قابل خواندن برای انسان ها می باشد که خروجی به شکل زیر نمایش داده می شود :

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  3.9G   14G  23% /
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G  148K  1.9G   1% /dev/shm
tmpfs                    1.9G  8.9M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                497M  119M  379M  24% /boot
[root@localhost ~]#

علاوه بر اینکه df خروجی هارد درایوهای فیزیکی شما را نمایش مید هد سایر فایل سیستم های mount شدن در سیستم را نیز نمایش می دهد ، برای مثال فایل سیستم udev که بصورت //dev نمایش داده می شود و همچنین فایل سیستم tmpfs و سایر زیر مجموعه های آنها در خروجی این دستور نمایش داده می شوند. برخی از فایل سیستم هایی که درون حافظه RAM قرار دارند نیز در خروجی df نمایش داده می شوند برای مثال اگر در خروجی دستور df چیزی به شکل //run//lock مشاهده کردید این موارد در حافظه RAM قرار دارند. دلیل ایجاد شدن چنین فایل سیستم های درون حافظه RAM سرعت بالای آن است که به نسبت هارد دیسک بسیار سریعتر است.همچنین device manager لینوکس هم بصورت خودکار یک device file به شکل //dev ایجاد می کند ، دستور df پارامترهای دیگری هم دارد که بسیار به درد بخور هستند ، برای مثال پارامتر T- برای اضافه کردن یک ستون جدید و اضافه کردن نوع فایل سیستم استفاده می شود که خروجی آن را در زیر مشاهده می کنید :

[root@localhost ~]# df -T
Filesystem              Type     1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root xfs       18348032 4343560  14004472  24% /
devtmpfs                devtmpfs   1925448       0   1925448   0% /dev
tmpfs                   tmpfs      1934520     148   1934372   1% /dev/shm
tmpfs                   tmpfs      1934520    9068   1925452   1% /run
tmpfs                   tmpfs      1934520       0   1934520   0% /sys/fs/cgroup
/dev/sda1               xfs         508588  120876    387712  24% /boot
[root@localhost ~]#

علاوه بر پارامت T بزرگ ، پارامتر دیگری بصورت –l نیز وجود دارد که اجبار می کند که دستور df فقط فایل سیستم های local را نمایش بدهد و از نمایش دادن فایل سیستم هایی که توسط NFS یا iSCSI و یا CIFS ایجاد شده اند خودداری می کند. در اصطلاح Remote Filesystem ها نمایش داده نمی شوند. بنابراین بصورت کلی دستور df برای نمایش دادن فضای اشغالی و فضای خالی file system ها استفاده می شود.

معرفی دستور du در لینوکس

دستور du مخفف کلمه های disk usage یا میزان مصرف دیسک است اما برخلاف df که فقط فایل سیستم ها را نمایش می دهد du بصورت اختصاصی برای نمایش دادن میزان ظرفیتی است که دایرکتوری ها در دیسک اشغال کرده اند ، برای مثال شما می توانید متوجه شوید که دایرکتوری Downloads ای که در پروفایل کاربری شما وجود دارد چقدر ظرفیت از هارد دیسک را گرفته است ، به مثال زیر توجه کنید ابتدا دستور du در دایرکتوری کاربر unity اجرا شده است :

[unity@localhost ~]$ du
0	./.mozilla/extensions
0	./.mozilla/plugins
0	./.mozilla
0	./.config/imsettings
0	./.config/abrt
0	./.config/gnome-session/saved-session
0	./.config/gnome-session
68	./.config/pulse
0	./.config/gconf
0	./.config/goa-1.0
4	./.config/dconf
4	./.config/ibus/bus
4	./.config/ibus
4	./.config/gtk-3.0
0	./.config/tracker
0	./.config/evolution/sources
0	./.config/evolution
16	./.config/nautilus
4	./.config/yelp
4	./.config/totem
0	./.config/libreoffice/4/user/config/soffice.cfg/modules/simpress/menubar
0	./.config/libreoffice/4/user/config/soffice.cfg/modules/simpress/toolbar
0	./.config/libreoffice/4/user/config/soffice.cfg/modules/simpress/statusbar
0	./.config/libreoffice/4/user/config/soffice.cfg/modules/simpress/images/Bitmaps
0	./.config/libreoffice/4/user/config/soffice.cfg/modules/simpress/images
0	./.config/libreoffice/4/user/config/soffice.cfg/modules/simpress
0	./.config/libreoffice/4/user/config/soffice.cfg/modules
0	./.config/libreoffice/4/user/config/soffice.cfg

دستور بالا بصورت عام ابتدا ظرفیت دایرکتوری ها و سپس مسیر دقیق دایرکتوری ها را نمایش می دهد که طبیعتا به ظرفیت کیلوبایت می باشد ، حالا اگر بخواهیم بدانیم که دایرکتوری Downloads کاربر unity چقدر فضا به مگابایت یا گیگابایت استفاده کرده است کافیست که با استفاده از پارامتر h- در ادامه دستور du و مشخص کردن دایرکتوری مورد نظر به شکل زیر خروجی دقیق میزان ظرفیت مصرفی را مشاهده کنیم :

[unity@localhost ~]$ du -h Downloads/
125M	Downloads/
[unity@localhost ~]$

همانطور که مشاهده می کنید ظرفیت دایرکتوری Downloads مقدار 125 مگابایت است. ساختار دستور du به شکل Recusrsive یا بازگشتی است یعنی اینکه تمامی دایرکتوری ها و زیرمجموعه های آنها را جستجو می کند و نتیجه یک دایرکتوری و زیرمجموعه های آن را بصورت یکجا به شما نمایش می دهد . در واقع ظرفیتی که شما از یک دایرکتوری مشاهده می کنید ظرفیت خود دایرکتوری به همراه تمامی زیر مجموعه های آن است . برای مثال در دستور بالا کل ظرفیت دایرکتوری Downloads به همراه همه subdirectory ها مقدار 125 مگابایت شده است و الزامی به این نیست که در دایرکتوری اصلی این فضا استفاده شده باشد. اگر می خواهید کلیه ظرفیت استفاده شده در همه دایرکتوری ها بدون اینکه ساختار دایرکتوری ها را مشاهده کنید را ببینید کافیست که از پارامتر s- به شکل زیر استفاده کنید :

[unity@localhost ~]$ du -hs
138M	.
[unity@localhost ~]$

همانطور که در خروجی مشاهده می کنید فقط مقدار ظرفیت استفاده شده در کل دایرکتوری و زیرمجموعه های آن به شما نمایش داده می شود و دایرکتوری ها در خروجی وجود ندارند. دستورات df و du برای مدیریت کردن و مانیتورینگ فضای دیسک در لینوکس بسیار کاربردی هستند ، شما با df ظرفیت فایل سیستم و با du ظرفیت تک تک دایرکتوری ها را می توانید مشاهده کنید. امیدوارم مورد توجه شما قرار گرفته باشد . ITPRO باشید

نویسنده : محمد نصیری

منبع : ITPRO

هرگونه نشی و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات