一、問題描述
由於最近公司阿里雲服務器磁盤經常被佔滿,發現是由於生成大量的日誌文件導致的(特別的記錄服務之間心跳的日誌,每天好幾個G),所有需要每天定時去清理日誌文件。
二、編寫清理文件腳本
vi auto_del_15_days_ago_log.sh
#清理多個應用的日誌文件
find /xxx/xxx/xxx/Tomcat/logs -mtime +15 -name "*201*" -exec rm -rf {} \;
find /xxx/xxx/xxx/logs -mtime +15 -name "*201*" -exec rm -rf {} \;
find /xxx/xxx/xxx/Tomcat/logs -mtime +15 -name "*201*" -exec rm -rf {} \;
find /xxx/xxx/xxx/bin -mtime +15 -name "*201*" -exec rm -rf {} \;
修改該腳本文件的權限:
chmod +x auto_del_15_days_ago_log.sh
三、設置定時執行auto_del_15_days_ago_log.sh
#這是執行計劃
crontab -e
#將 執行腳本加入到系統計劃任務,到點自動執行
10 0 * * * /xxx/xxx/auto_del_15_days_ago_log.sh >/dev/null 2>&1
這裏的設置是每天凌晨0點10分執行auto_del_15_days_ago_log.sh 文件進行數據清理任務了。
關於 >/dev/null 2>&1 簡介:
linux在執行shell命令之前,就會確定好所有的輸入輸出位置,並且從左到右依次執行重定向的命令,所以>/dev/null 2>&1的作用就是讓標準輸出重定向到/dev/null中(丟棄標準輸出),然後錯誤輸出由於重用了標準輸出的描述符,所以錯誤輸出也被定向到了/dev/null中,錯誤輸出同樣也被丟棄了。執行了這條命令之後,該條shell命令將不會輸出任何信息到控制檯,也不會有任何信息輸出到文件中。
四、查看定時任務是否設置成功
crontab -l
完成以上步驟,服務器就會定期清理這部分日誌了,基本上不會再收到服務器磁盤空間不足類的報警信息了,哈哈。。。