Linux定时删除指定文件

434 阅读2分钟

最近通过jenkins部署线下环境,因为有备份的逻辑,导致产生大量的jar包占据大量存储,一不小心就满了。所以了解了下contab,写定时脚本主动删除jar包。

1.创建脚本

vim clean_backup_jar.sh
# 输入 find /路径/ -mtime +10 -name "*.jar.bak.*" -exec rm -rf {} \ 
# wq
# 路径相对绝对都可以,如果涉及到多个目录直接用上层目录就可以找到所有文件
# -mtime +10 代表前10天的就过期掉了
#    -mtime (modify time)文件内容被修改时间
#    -atime (access time)文件最近一次被访问时间
#    -ctime (change time)文件状态更改的时间,比如权限,分组等属性的变化
# +10 中的+代表超过,-代表在时间内,不带符号代表等于
# -name 通过名称查找
# rm -rf 就是删掉该文件

2.修改文件权限

chown 777 clean_backup_jar.sh

3.执行周期

crontab -e
# 输入 0 0 * * 1 /路径/backup_sql_clean.sh,代表每周一执行
# wq保存
# 出现 crontab: installing new crontab才是成功的,/tmp/crontab.in8fYk":1: bad hour 代表有错误
# cron 的格式 
#   {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} 
#   o minute: 区间为 0 – 59 
#   o hour: 区间为0 – 23 
#   o day-of-month: 区间为0 – 31 
#   o month: 区间为1 – 12. 1 是1月. 12是12月. 
#   o Day-of-week: 区间为0 – 7. 周日可以是0或7.

4.执行cron

#查看状态
systemctl status crond.service
#重启
systemctl restart crond.service

5.注意事项

  • 执行周期的格式问题容易出错,虽然形式和Java的cron相似,但是具体还是与很大区别,参照上述说明;
  • 选择适合的匹配方式和执行周期,笔者想快速删掉冗余文件,导致部署还未完成就把上传的包干掉了;
  • 正确方式先验证脚本是否可以正确执行,然后再用小的时间间隔来验证定时任务是否ok。