1.问题
Linux服务器上有程序持续产生临时文件供其它程序使用,但这些文件只需保留一段时间,后续要经常进行删除过期文件,人工删除一是输出时间长,二是多个目录删除繁琐
2.解决方案
使用Linux自带的删除文件命令进行模糊匹配文件名称+设置定时机制
3.实现步骤
- 删除目录(ome/linux1/newServer/S_DBSERVER_FILE/cdndata)下前30天的文件
- 该目录下的文件是以zip或者sql结尾的,那么我们可以这样写删除命令
find /home/linux1/newServer/S_DBSERVER_FILE/cdndata -type f -name '*.sql' -or -name '*.zip' -mtime +30 -exec rm -f {} \;
- 上面命令的解释:find 要查找的文件目录 -type 文件类型(-f) -name 文件名称(可用*通配) -or -name 多个文件名称匹配 -mtime 前30天文件 -exec 执行 -rm 删除 -f 强制 {} \;
- 可以看到现在留下的文件都是前30天以内的,我们可以把这个命令写成脚本,后续加到定时任务中,自动执行
vi rmPassDateFile.sh
- 把刚刚执行的命令加在该文件中
- 给脚本赋予执行权限
chmod +x rmPassDateFile.sh
- 将该脚本加到定时任务中(root用户)
crontab -e
- 每天00:00执行
0 0 * * * /home/linux1/newServer/S_DBSERVER_FILE/cdndata/rmPassDateFile.sh >> /delete.log
- 定时任务命令解释:前五个占位符是时间(分 时 日 月 周),*号代表每次,后面接脚本路径 ,再后面是将脚本中输出的日志写在文件中,我们可以再脚本中加入时间戳,后续可以查看执行脚本的记录
- 重启定时服务
service crond restart