inode چیست؟
ساختمان دادهای که در فایل سیستم لینوکس اطلاعاتی مانند فایلها، دایرکتوریها و… را در فایل سیستم ذخیره میکند.
هر فایل سیستم تعداد محدودی inode (آینود) و در نتیجه تعداد مشخصی فایل را میتواند نگهداری کند.
چنانچه تعداد فایلهای فایلسیستم از میزان مشخصی بیشتر شود تعداد آینودهای مجاز آن فایلسیستم به اتمام میرسد و امکان ذخیره و ایجاد تعداد بیشتری فایل وجود نخواهد داشت.
دستور زیر به جهت یافتن تعداد inode های مجاز سیستم استفاده میشود:
df -i
خروجی این دستور میتواند به شکل زیر باشد.
Filesystem Inodes IUsed IFree IUse% Mounted on
rootfs 60506112 32619 60473493 1% /
از دستور زیر جهت مشاهده جزئیات بیشتر از inode میتوانید استفاده کنید.
# tune2fs -l /dev/sda1 | grep -i inode
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super
Inode count: 131072
Free inodes: 131037
Inodes per group: 2048
Inode blocks per group: 256
First inode: 11
Inode size: 128
Journal inode: 8
Journal backup: inode blocks
در صورتی که inode های فایل سیستم پر شد میبایست فایلها و دایرکتوریها را پاک کنید.
راههای متفاوتی برای پاک کردن این فایلها وجود دارد. ابتدا باید فایلها را با دستور ls مشاهده کنیم، اگر تعداد فایلهای درون یک دایرکتوری از تعداد مشخصی بیشتر باشد اجرای دستور فوق زمانبر خواهد بود.
پس بهترین راه برای مشاهده فایلها استفاده از دستور ls با پارامتر -1 است. با استفاده از این دستور میتوانید فایل هارا در مدت زمان کوتاه تری مشاهده کنید.
برای پاک کردن فایلها از دستور rm به همراه پارامتر -rf استفاده کنید.
rm -rf /home/user/*
برای مشاهده تعداد کاراکترهایی که میتوان به عنوان پارامتر به هر دستور پاس داد از دستور زیر استفاده کنید:
$getconf ARG_MAX
5048152: نتیجه
پس اگر دستور rm -rf را در دایرکتوری اجرا کنیم که تعداد فایلهای آن از 5048152-4 بیشتر باشد دستور با خطای command: Argument list too long توقف میکند علت بروز خطا هم این است که تمام فایلها به عنوان پارامتر به دستور rm ارسال میشود و تعداد کاراکتر پارامترها از حد مجاز بیشتر است.
جهت رفع مشکل فوق از چندین راه میتوان استفاده کرد اما بهترین و سریعترین راه برای پاک کردن تعداد بالای فایل در یک دایرکتوری استفاده از دستور زیر است:
ls -1 | xargs rm -f
گاهی ممکن است تعداد فایل ها بسیار زیاد باشد اگر تعداد فایلها بیشتر از میزان جافظه سیستم باشد، اجرای این دستور غیر ممکن است برای رفع این مشکل طبق مسیر زیر اقدام کنید:
- ابتدا دستور ls را اجرا میکنیم و خروجی دستور را در فایل ذخیره میکنیم
- سپس اطلاعات را از فایل میخوانیم و با استفاده از دستور xargs فایلها را پاک میکنیم.
امیدواریم این مطلب مورد توجه شما قرار گرفته باشد.
تلاش نت
02154109000