Linux 定期切割Tomcat catalina.out和清理log日志
Tomcat日志的清理有兩種情況
第一種:日志本身就以日期保存,每天一個文件的,比如localhost.2020-04-24.log;這類日志只需要卡一個定時器,定期刪除即可。
第二種:日志是日積月累在同一個文件中,比如catalina.out;這類文件的清理需要先"切割",再刪除。以catalina.out為例,先將catalina.out備份成catalina.out-${date};再定期刪除catalina.out-${date}
第一種方案:定期刪除15天前的已分割日志
1- 刪除文件
命令:find 對應目錄 -mtime +天數 -name "文件名" -exec rm -rf {} \;
實例命令示例:find /opt/java/tomcat/logs/ -mtime +15 -name "localhost_access_log.*" -exec rm -rf {} \;
2- 計划任務
2-1- 創建shell:
新建執行文件:touch /opt/java/tomcat/logs/auto-del-15-days-ago-log.sh
分配運行權限:chmod +x /opt/java/tomcat/logs/auto-del-15-days-ago-log.sh
2-2- 編輯shell腳本
進入sh文件:vim /opt/java/tomcat/logs/auto-del-15-days-ago-log.sh
添加如下刪除腳本(5種日志文件):
find /opt/java/tomcat/logs/ -mtime +15 -name "localhost_access_log.*" -exec rm -rf {} \;
find /opt/java/tomcat/logs/ -mtime +15 -name "localhost.*" -exec rm -rf {} \;
find /opt/java/tomcat/logs/ -mtime +15 -name "manager.*" -exec rm -rf {} \;
find /opt/java/tomcat/logs/ -mtime +15 -name "catalina.*" -exec rm -rf {} \;
find /opt/java/tomcat/logs/ -mtime +15 -name "host-manager.*" -exec rm -rf {} \;
保存並退出編輯(:wq)
2-3- 設置定時器
進入定時器文件:crontab –e
添加定時任務:1 1 * * * /opt/java/tomcat/logs/auto-del-15-days-ago-log.sh //每天凌晨1點1分執行(注意Llinux定時器的時間設置是從分開始,沒有秒的)
保存退出(:wq)
第二種方案:定期切割catalina.out,並刪除15天前的備份
#創建sh文件 touch /opt/java/tomcat/logs/clear-catalina-out-15-days.sh #編輯sh文件 vim /opt/java/tomcat/logs/clear-catalina-out-15-days.sh ##在sh文件中添加以下內容,並保存 #定義tomcat日志文件目錄
log_path=/opt/java/tomcat/logs
#定義當前日期 d=`date +%Y-%m-%d`
#定義15天前的日期 d15=`date -d'15 day ago' +%Y-%m-%d`
#跳轉到tomcat日志文件夾,復制catalina.out到catalina.out.${d}.log cd ${log_path} && cp catalina.out ${log_path}/catalina.out.${d}.log
#清空cat文件alina.out echo > catalina.out
#刪除15天前的catalina.out.${d15}.log rm -rf ${log_path}/catalina.out.${d15}.log #添加sh文件執行權限 chmod +x /opt/java/tomcat/logs/clear-catalina-out-15-days.sh #配置定時器 crontab -e ##添加以下內容,並保存(:wq) 1 1 * * * /opt/java/tomcat/logs/clear-catalina-out-15-days.sh #重新加載定時器 service crond reload
其它輔助操作和信息
查看定時器運行日志
[root@izbp10ebr6tsvo83iahgzdz ~]# tail -f /var/log/cron ...... Apr 27 20:58:01 izbp10ebr6tsvo83iahgzdz CROND[26445]: (root) CMD (/opt/java/tomcat/logs/auto-del-15-days-ago-log.sh)
查看定時器運行狀態
[root@izbp1aum9uyt0x56d3vepwz logs]# service crond status Redirecting to /bin/systemctl status crond.service ● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-08-07 14:32:03 CST; 8 months 20 days ago Main PID: 2645 (crond) CGroup: /system.slice/crond.service └─2645 /usr/sbin/crond -n
END