0
点赞
收藏
分享

微信扫一扫

Linux 定时任务 删除指定时间前的文件


业务前提:

  • 因为私有化部署的原因,要保证磁盘空间不被填满,所以就要求对图片文件进行及时清理。

操作指导:

  • ①. 新建一个可执行脚本

touch /usr/local/bin/clear_img.sh

注意,赋予权限:​​chmod 777 clear_img.sh​

 ②. 编辑 ​​clear_img.sh​​ 文件,在其中添加类似下面的代码

#!/bin/sh
find //home/data/file -mtimes +10 -name *.jpg -exec rm -rf {} \;
find /tmp -type f -mmin +120 -name *.jpg -exec rm -rf {} \;

解析: find 后面紧跟的是要查找的目录,

. 表示当前目录 -type f:

指定查找对象为文件 -name *.log:

指定查找对象名称以.log结尾 -mtime +10:

查找10天以前的老文件 -mmin +120:

查找120分钟(两小时)以前的老文件 -exec rm -rf {} ;

:执行删除命令,这句注意,后面有个 {} ; 是必须的

  • ③. 将 clear_img.sh 文件加入到系统计划任务

   第一种方式:

crontab -e

 然后输入:

# 每分钟执行一次
*/1 * * * * /usr/local/bin/clear_img.sh

这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本。

第二种方式:

使用命令 vi /etc/crontab 编辑定时脚本

# 每分钟执行一次
*/1 * * * * root /usr/local/bin/clear_img.sh

这钟方式是系统级的,对所有用户都是生效的。

  • ④. 保存代码后 ,再执行下面的命令,以保证计划任务的生效。

systemctl restart crond

特别说明的是:

由于执行的最小的间隔是一分钟,如果是想实现 30秒的情况下执行一次有如下一种方法:

另外写一个脚本:

#!/bin/bash
while :
do
/usr/local/bin/clear_img.sh
sleep 30 # 延迟30秒执行
done

第二种方法:

* * * * * sleep 30; /home/xx/xx.sh
* * * * * sleep 00; /home/xx/xx.sh

到此完成脚本。

举报

相关推荐

0 条评论