امروزه شما می توانید به راحتی با استفاده از ابزارهای گرافیکی اطلاعات خوبی در خصوص میزان استفاده از دیسک ها در سیستم عامل لینوکس به دست بیاورید اما همیشه برای شما محیط های دسکتاپ لینوکس وجود ندارد که بخواهید از آنها استفاده کنید ، دو دستور df و du دستوراتی هستند که اطلاعات بسیار خوبی در خصوص دیسک ها در اختیار شما قرار می دهند. با استفاده از این دستورات نه تنها شما می توانید اطلاعات خوبی در خصوص میزان فضای خالی موجود بر روی فایل سیستم های mount شده به دست بیاورید بلکه می توانید میزان فضای اشغال شده توسط هر یک از دایرکتوری های موجود در هر فایل سیستم را نیز بصورت مجزا مشاهده کنید. در این مقاله در ITPRO می خواهیم به بررسی تفاوت دو دستور معروف du و 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 مخفف کلمه های 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
هرگونه نشی و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود