linux计划定时自动删除目录下文件

要实现定时删除某个目录下的所有文件需要用到linux的crontab命令,可以用shell脚本实现。例如删除/tmp下的所有缓存文件,操作如下:

[root@localhost ~]# vi /etc/init.d/delete.sh
按i并复制下面内容到delete.sh文件内,之后按shift+: 输入wq保存并退出。
#!/bin/bash
dir=/tmp //需要清空的目录名称
files=`ls ${dir}`
for file in $files
do
if [ -e ${dir}/${file} ];then
rm -f ${dir}/${file}
fi
done

然后给此脚本755权限,代码如下:

[root@localhost ~]# chmod 755 /etc/init.d/delete.sh

下面就使用crontab命令进行时间设定,例如,每天凌晨3点清除/tmp目录下的所有文件。运行以下命令会进入vim编辑界面。

[root@localhost ~]# crontab –e
粘贴以下代码;
0 3 * * * /etc/init.d/delete.sh
保存并退出,现在定时工作已经完成了,每天凌晨3点自动清空/tmp目录下的文件。
crontab –e的时间用法说明;
* * * * * /etc/init.d/delete.sh
分 时 日 月 周 命令
第1列*号表示分钟1-59 每分钟用*或者 */1表示
第2列*号表示小时0-23小时(0表示0点)
第3列*号表示日期1-31日
第4列*号表示月份1-12月
第5列*号表示每周,0-6(0表示星期天)
第6列是要运行的命令

例如每周3的晚上23:30运行该脚本,可以这样写:
30 23 * * 3 /etc/init.d/delete.sh

其他时间段也是如此。

二、每日凌晨0点定时删除/temp目录下的所有一个月未被访问的文件。

脚本实现
linux 终端输入crontab -e,添加定时任务脚本命令

[root@localhost ~]# crontab -e
在文件末尾追加

0 0 * * * find /temp -atime +30 -exec rm -rf {} ;

参数说明

命令格式:
find 对应目录 -name “文件名” -type f -mtime +n -exec rm -rf {} ;
-type f:普通文件
d:目录
-mtime 修改时间(modify time)
-atime 访问时间(access time)
-ctime 状态变更时间(change time)
n
+n 第n天之前的,不包括第n天当天
-n 第n天到今天的,不包括第n天当天
备注: n为整数,以天为单位,0x24表示今天,1x24表示昨天;n有一位小数,以小时为单位,如0.5x24;n有两位小数,以分钟为单位,如0.55x24;

脚本验证
查看定时任务是否被加入定时任务列表

[root@localhost ~]# crontab -l
查看文件是否被删除,这里调整为在13点25分删除1天内创建的文件(删除刚创建的文件),测试用,操作小心哦

25 13 * * * find /temp -mtime -1 -exec rm -rf {} ;

编辑crontab配置文件
#vim /etc/crontab
编辑好后,:wq保存。
然后重启定时任务。
#systemctl restart crond
查看状态
#systemctl status crond
也可以执行crontab -e 来添加。
crontab添加的定时任务,可以使用crontab -l来查看定时任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值