من یک سرور لینوکس نسبتا با بار بالا دارم که روزانه در این سرور کلی فضا بابت log اشغال میشه. میخوام در پوشه ی لاگها، بصورت اتوماتیک همه لاگ فایل های مربوط به پانزده روز قبل را پاک کنم و فقط 15 روز آخر نگهداشته شود. یک اسکریپتی پیدا کردم که مشکل من رو حل کرد اینجا میذارم که بقیه هم استفاده کنند.
برای delete کردن لاگ های قدیمی در لینوکس باید به ازای هر سرویسی که داریم یه خط در cronjob تعریف کنیم. ابتدا دستور crontab -e را میزنیم، سپس با توجه به نوع سرویسی که داریم یکی از دستوراتی که در ادامه گفته شده را درون فایل ceontab ذخیره کنید.
مثلا برای نگهداری لاگ های سرویس Apache فقط برای 15 روز گذشته، خط زیر را به فایل کرون جاب مان اضافه میکنیم :
و برای سرویس Samba این خط را به cron job اضافه میکنیم :
سرویس های دیگه هم بنابر نیازمون همانند بالا میتونیم کانفیگ کنیم که تا چه تاریخی لاگ های اون سرویس در سرور linux مان نگهداری شود. این اسکریپت لاگ ها را تا 15 روز گذشته نگه میدارد و هر لاگی که تاریخش بیشتر از 15 روز باشد به صورت روزانه بررسی و حذف خواهد شد.
برای delete کردن لاگ های قدیمی در لینوکس باید به ازای هر سرویسی که داریم یه خط در cronjob تعریف کنیم. ابتدا دستور crontab -e را میزنیم، سپس با توجه به نوع سرویسی که داریم یکی از دستوراتی که در ادامه گفته شده را درون فایل ceontab ذخیره کنید.
کد PHP:
# crontab -e
مثلا برای نگهداری لاگ های سرویس Apache فقط برای 15 روز گذشته، خط زیر را به فایل کرون جاب مان اضافه میکنیم :
کد PHP:
@daily find /var/log/httpd/ -type f -mtime +15 | xargs rm -f
و برای سرویس Samba این خط را به cron job اضافه میکنیم :
کد PHP:
@daily find /var/log/samba/ -type f -mtime +15 | xargs rm -f
سرویس های دیگه هم بنابر نیازمون همانند بالا میتونیم کانفیگ کنیم که تا چه تاریخی لاگ های اون سرویس در سرور linux مان نگهداری شود. این اسکریپت لاگ ها را تا 15 روز گذشته نگه میدارد و هر لاگی که تاریخش بیشتر از 15 روز باشد به صورت روزانه بررسی و حذف خواهد شد.