之前在做一個項目,服務器部署在Linux系統(Red Hat 6)下,后來發現服務器運行每天產生大量的日志文件,一個多月產生了60多G的日志文件,消耗巨大的存儲空間。后來就想辦法讓Linux系統自動每天清理十五天以前的日志文件。
實現過程是寫一個刪除日志的shell腳本,然后利用Linux的crontab設置定時器定時自動執行shell腳本。
解釋一下,服務器產生的日志放在/home/webServive/log/路徑下。
使用相關用戶登錄Linux系統,例如我用的用戶是ryan,然后在/home/webServive路徑下新建cleaneLog.sh腳本,編輯相關shell腳本代碼,如下所示。
#!/bin/sh rm -vrf $(find /home/webServive/log/ -type d -mtime +15) and rm -vrf $(find /home/webServive/log/ -type f -mtime +15) and echo "Successfully deleted service logs."
rm -vrf $(find /home/webServive/log/ -type d -mtime +15)是先找到 /home/webServive/log/路徑下十五天之前建立的文件夾,然后刪除,刪除文件夾以及文件夾下面的文件。
rm -vrf $(find /home/webServive/log/ -type f -mtime +15)是先找到 /home/webServive/log/路徑下十五天之前建立的文件,然后刪除。
使用終端找到cleanLog.sh所在路徑,然后執行chmod u+x cleanLog.sh命令為文件的所有者增加可執行權限。
將終端切換到root用戶,執行crontab -u ryan –e為ryan用戶添加定時器,編輯定時內容,每天凌晨2.15分執行cleanLog.sh腳本清理日志文件。
15 2 * * * /bin/sh /home/webServive/cleanLog.sh
保存好定時內容后,執行以下腳本重啟定時器,使其生效。
cd /sbin/
service crond restart