فایلهای گزارش میتوانند به سرعت به اندازههای عظیمی رشد کنند و تا زمانی که آنها را تمیز نکنید، فضای با ارزش دیسک را اشغال میکنند.
خلاصه عناوین
- چرا لاگ ها فضای دیسک زیادی را اشغال می کنند؟
- یافتن سیاهههای مربوط
- لینوکس چگونه فایل های لاگ را می چرخاند
- کدام گزارش ها برای حذف ایمن هستند؟
- چگونه آنچه را که گزارش های شما را پر می کند برطرف کنید
تعاریف کلیدی
- لاگ های سیستم لینوکس می توانند مقدار قابل توجهی از فضای دیسک را اشغال کنند.
- سیستم شما معمولاً فایل های گزارش قدیمی را فشرده می کند تا فضای دیسک ذخیره شود.
- می توانید از دستور journalctl یا tail -f برای مشاهده گزارش ها و شناسایی فرآیندهای مشکل ساز استفاده کنید.
در حالی که سیستم های لینوکس به شیک بودن شهرت دارند، ممکن است متوجه شوید که فضای دیسک شما به طور ناگهانی کم شده است. چرا این اتفاق افتاده است؟ بزرگترین سرنخ، و احتمالاً بزرگترین مقصر، در لاگ های سیستم لینوکس شما یافت می شود.
چرا لاگ ها فضای دیسک زیادی را اشغال می کنند؟
گزارش ها بخش مهمی از مدیریت سیستم لینوکس شما هستند. میتوانید ببینید که در دستگاهتان چه میگذرد، و همچنین میتوانید مشکلاتی را که پیش میآیند عیبیابی کنید. دیمون های لاگ لینوکس مشابه Event Viewer در ویندوز هستند. سیاههها معمولاً فضای زیادی را اشغال نمی کنند. این به این دلیل است که اکثر توزیعها به طور خودکار میزان فضایی را که روی دیسک شما اشغال میکنند مدیریت میکنند.
لاگهای لینوکس از لحاظ تاریخی فایلهای متنی ساده بودهاند، اما با انتقال بسیاری از توزیعهای بزرگ به systemd، آنها فایلهای باینری هستند که توسط journald، یک سرویس systemd، مدیریت میشوند. از طرف دیگر، توزیع شما از rsyslog یا syslog-ng استفاده خواهد کرد.
از آنجایی که گزارشهای قدیمی مرتبط نیستند و بایگانیهای بزرگ میتوانند فضا را اشغال کنند، سیستم شما معمولاً آنها را «چرخش» میکند – بایگانی، فشردهسازی و در نهایت حذف میکند – تا فضای دیسک را برای چیزهایی که واقعاً میخواهید ذخیره کند.
اگرچه ممکن است فکر نکنید که لاگها فضای زیادی را اشغال میکنند، یک فرآیند نادرست میتواند لاگهای شما را سریعتر از سیستم بچرخاند آنها را پر کند.
اگر فضای دیسک خود را بررسی میکنید و متوجه میشوید که ناگهان کم میشود، و میدانید که اخیراً هیچ فایل بزرگی دانلود نکردهاید، ممکن است مشکلی در گزارشهای سیستم لینوکس شما باشد. باید بفهمید چه چیزی لاگ های سیستم شما را پر کرده و آن را برطرف کنید.
می توانید با دستور du -h میزان فضای دیسک مورد استفاده خود را بررسی کنید:
du -h /var/log
لیستی از هر زیر شاخه را به همراه فضایی که اشغال می کند مشاهده خواهید کرد:
یافتن سیاهههای مربوط
اگر از توزیع مدرن لینوکس با systemd استفاده می کنید، از برنامه journalctl برای مشاهده گزارش های خود استفاده خواهید کرد. journald معمولاً گزارشها را در فهرستهای /var/log/journal یا /run/log/journal، بسته به توزیع، ذخیره میکند.
برای مشاهده گزارشها، دستور journald را در اعلان پوسته تایپ کنید. گزینه های مفید دیگری در خط فرمان وجود دارد. برای مشاهده پیام های بوت از گزینه -b استفاده کنید:
journalctl -b
می توانید پیام های گزارش سیستم خود را به صورت بلادرنگ با گزینه -f مشاهده کنید.
اگر توزیع شما از systemd استفاده نمیکند، گزارشها را در پوشه /var/log پیدا خواهید کرد. حتی با systemd، برخی از برنامه ها هنوز گزارش های خود را در این فهرست ذخیره می کنند. اینها فایل های متنی معمولی هستند که می توانید با ابزاری مانند پیجر، مانند کمتر، آنها را بررسی کنید.
به عنوان مثال، برای خواندن گزارش سیستم:
less /var/log/syslog
محتویات کامل فایل گزارش را مشاهده خواهید کرد که ممکن است شامل هزاران خط باشد:
شما همچنین می توانید آن را به صورت بلادرنگ با گزینه -f فرمان tail کنترل کنید:
tail -f /var/log/syslog
لینوکس چگونه فایل های لاگ را می چرخاند
در دایرکتوری var/log، ممکن است فایلهایی را مشاهده کنید که نامهایشان به «log.N.gz» ختم میشود، جایی که N یک عدد است. این نتیجه چرخش لاگهای قدیمیتر توسط سیستم است. اکثر توزیعها ابزاری دارند که بهطور خودکار این کار را انجام میدهد، به نام «logrotate». logrotate معمولاً برای اجرا به صورت cron job یا systemd timer تنظیم می شود.
بهطور پیشفرض، اکثر توزیعها روزانه به صورت Logrotate اجرا میشوند. logrotate گزارشهای قدیمیتر را با استفاده از gzip فشرده میکند، همانطور که پسوند فایل “.gz” نشان میدهد. برای انجام این کار از آستانه ای مانند سن یا اندازه فایل استفاده می کند و از آستانه دیگری برای حذف فایل های گزارش قدیمی در نهایت استفاده می کند.
گزینه های پیش فرض برای logrotate برای اکثر کاربران دسکتاپ کافی است. میتوانید با ویرایش فایل /etc/logrotate.conf بهعنوان superuser، و همچنین ویرایش فایلهای cron یا systemd timer سیستم خود، رفتار logrorate را تغییر دهید، اما این عملیات واقعاً فقط مربوط به مدیران سرور است.
بهتر است آنچه را که لاگ های شما را پر می کند، اصلاح کنید تا اینکه فایل های پیکربندی را برای صرفه جویی در فضای دیسک تغییر دهید. اگر حتماً باید پیکربندی را تغییر دهید، میتوانید صفحه راهنمای logrotate را بخوانید.
کدام گزارش ها برای حذف ایمن هستند؟
اگر همه چیز شکست خورد و شما ناامید هستید که فضای دیسک را آزاد کنید، می توانید قبل از logrotate، فایل های گزارش بایگانی شده را که به «.gz» ختم می شوند، به صورت دستی حذف کنید. می توانید از rm استفاده کنید، اما باید آن را به عنوان superuser اجرا کنید زیرا این فایل ها متعلق به سیستم هستند:
sudo rm /var/syslog/syslog.*gz
این دستور تمام فایل های حاوی “syslog” را حذف می کند. و با “gz” ختم می شود.
همیشه هنگام اجرای دستورات از طریق sudo بسیار مراقب باشید، به خصوص دستورات مخرب مانند rm!
شما معمولاً نباید فایلها را در فهرستهای سیستمی بدون درک کامل مفاهیم حذف کنید، اما گزارشهای بایگانی شده در صورت عدم وجود مشکلی ایجاد نمیکنند. اگر مشکلی دارید، ممکن است لازم باشد به گزارش های قدیمی تر مراجعه کنید.
چگونه آنچه را که گزارش های شما را پر می کند برطرف کنید
بهترین راه برای فهمیدن اینکه چه چیزی لاگ های شما را پر می کند این است که گزارش ها را با گزینه های journalctl یا tail -f دنبال کنید. بهترین شرط شما تکرار پیام های خطا است.
برای صرفه جویی در فضای دیسک، باید با فرآیند توهین آمیز مقابله کنید. اگر نمیدانید چه چیزی باعث این خطا شده است، میتوانید در وب جستجو کنید یا از کانالهای پشتیبانی توزیع خود درخواست کمک کنید. هنگامی که در نهایت آن را برطرف کردید، می توانید گزارش های قدیمی را با خیال راحت حذف کنید. اکنون باید فضای دیسک بسیار بیشتری داشته باشید.