crontab定时添加任务-shell脚本删除日志

Shell脚本删除日志

说明

我这里要清理的是/home/zyb/engines*/data内的日志文件
注:engines* (有多个这样的文件夹 大概是engines1到engines16)
也就是我要清理16个文件夹下data目录内的日志

log="./clear.log"

echo -e "执行 \e[1:32m [定时删除] \e[0m" [$(date '+%Y-%m-%d %H:%M:%S')] >> $log

printf  "==============
清理engine1-16文件夹
==============\n"

# 清理几天前的日志
day=3
# 目录数 从1开始(我这里目录名称是engine1-engine16,我要清理每个engine*里的data目录内的日志文件)
file_num=16

echo "开始清理" [$(date '+%Y-%m-%d %H:%M:%S')] >> $log

for((i=1; i<=$file_num; i++));
do
    find /home/zyb/engines$i/data -mtime +$day -type f -name '*-*-*-*:*:*:*:*' -exec rm -rf {} \;
done

echo "清理结束" [$(date '+%Y-%m-%d %H:%M:%S')] >> $log

这里进行解释

find /home/zyb/engines$i/data -mtime +$day -type f -name '*-*-*-*:*:*:*:*' -exec rm -rf {} \;

我使用find命令查询/home/zyb/engines\*/data下的文件
-mtime +3 # 查找三天前的日志($day在上方被赋值了3)
-type f # 类型 f 为普通文件
-name # 我要清除的文件名称为 ****-****-****:****:****:****:**** 这种格式的随机英文数字组合,这里用正则匹配
-exec rm -rf {} \; 在find里使用可以执行命令,例如我们要做的删除 rm -rf
{} 花括号代表前面find查找出来的文件名。
\;最后分号结尾 反斜杠只是充当 防转义的作用

配置定时任务

crontab -e 然后输入 30 5 * * * /home/zyb/clear.sh 每天的凌晨5点30会执行
crontab -l 查看定时任务
* * * * * 依次是 分钟 小时 日 月 星期
3 * * * * /home/zyb/clear.sh 每三分钟执行一次
3 5 * * * /home/zyb/clear.sh 每天凌晨5点3分执行
3 5 5 * * /home/zyb/clear.sh 每个月5号的凌晨5点3分执行
3 5 5 5 * /home/zyb/clear.sh 每年5月5号的凌晨5点3分执行
3 5 * * 1 /home/zyb/clear.sh 每周1的凌晨5点3分执行

你可能感兴趣的:(crontab定时添加任务-shell脚本删除日志)