j#

随着项目的增多,或者项目运行时间长了。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脚本。

 

posted on 2020-05-12 09:28  j#  阅读(198)  评论(0)    收藏  举报