随着项目的增多,或者项目运行时间长了。Linux硬盘都是满满的日志,如果不清理就会导致磁盘沾满的情况。下面结果Linux自带的crontab定时清理日志
crontab只是定时器,清理工作还是交给shell脚本比较靠谱。
1、准备一个清理tomcat日志脚本的clear_tomcat.sh
#!/bin/bash
logs_path="/apache-tomcat-8.5.23/logs" #日志所在目录
d=`date +%Y-%m-%d`
cp $logs_path/catalina.out $logs_path/catalina.${d}.out # 将大文件按日期拆分小文件
>$logs_path/catalina.out;
find $logs_path -mtime +1 -name "catalina.*.out" -exec rm -rf {} \; #按时间轴范围删除匹配的日志文件
find $logs_path -mtime +1 -name "localhost.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "catalina.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "host-manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "fileservice.log.*" -exec rm -rf {} \;
-mtime +1:是时间轴,表示当前日期的前N天的范围
2、准备一个调调任务定时清理的脚本clear_xxl_job.sh(看个人需求,这里只是举例子,非必须的)
#!/bin/bash logs_path="/data/applogs/xxl-job" d=`date +%Y-%m-%d` cp $logs_path/xxl-job-admin.log $logs_path/xxl-job-admin.log.${d} >$logs_path/xxl-job-admin.log; find $logs_path -mtime +2 -name "xxl-job-admin.log.*" -exec rm -rf {} \;
3、将以上2个shell脚本加入到crontab定时任务中
进入crontab:
crontab -e
输入:
0 10,22 * * * sh /software/clear_tomcat.sh
0 9,21 * * * sh /software/clear_xxl_job.sh
0 10,22 * * * 前面这段是cron表达式,表示每天10点、22点的0分执行。
sh /software/clear_tomcat.sh 表示只需上面我们配置的shell脚本
总结:crontab相对而言是比较简单好使,关键就是要自己根据需求写好对应的shell脚本。
浙公网安备 33010602011771号