1、新建shell脚本
vim cleanlog.sh
2、编辑shell脚本,注意修改logpath和outpath,logpath是你日志所在的目录,outpath是记录删除记录的
#!/bin/sh
######################################################################
# 日志定时运行时间为每周日4点2分
# 删除7天之前的日志文件
# 日志文件时间是根据日志名称后面的日期来计算
# 运行脚本注意日志文件中是否有其他相同后缀的非日志文件和日志文件名称是否符合要求
# 其日志格式必须为 :pro-debug-0-2019-04-13.log , 即 *2019-04-13.log
######################################################################
#当前时间
currTime=$(date +"%Y-%m-%d %T")
#需要删除的日志文件所在目录
logpath=/home/local/logs
#删除日志的记录所在目录
outpath=/home/local/historycleanlog
#进入日志目录
cd $logpath
echo $currTime " 清理日志脚本执行开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>">> ${outpath}/catalina.out
#7天之前的日志文件删除
#获取7天之前的日期
del_date=`date +%Y-%m-%d -d "7 days ago"`
#获取文件名中的日期字符串,然后对比时间进行相应的操作
for n in `ls *.log -1`;do
m=`echo $n | awk -F. '{print $(NF-1)}'`
m=`echo ${m:0-10}`
if [ ! $m ]; then
continue
fi
if [[ $m < $del_date || $m = $del_date ]];then
echo "file" $n "will be deleted." >> ${outpath}/catalina.out
rm -rf $n
fi
done
echo $currTime" 清理日志脚本执行结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>">> ${outpath}/catalina.out
echo " ">> ${outpath}/catalina.out
echo " ">> ${outpath}/catalina.out
3、给shell脚本赋予可执行权限
chmod +x cleanlog.sh
4、编辑定时任务
crontab -e
# Example of job definition:
# .---------------- minute (0 - 59)
# | .-------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
2 4 * * 0 /home/local/cleanlog.sh
5、重启定时器
service crond restart
6、查看定时任务
crontab -l
如果写的定时任务出现在定时任务列表,则成功,定时任务时间可以自己设置短一些进行测试