Linux下定时删除指定目下n天前的文件

案例

命令

1
* 2 * * * find /home/ftp/private/* ctime 1 -exec rm -rf {} \;

详解

表示每天两点删除/home/ftp/private/目录下一天前创建的所有文件,不删除文件夹private,如果这个文件夹也要删除的话用* 2 * * * find /home/ftp/private ctime 1 -exec rm -rf {} \;

其中

* 6 * * *

  • 第一个*号表示时间中的 分钟 取值范围:0-59

  • 第二个*号表示时间中的 小时 取值范围:0-23

  • 第三个*号表示一个月中的第几天,取值范围:1-31

  • 第四个*号表示一年中的第几个月,取值范围:1-12

  • 第五个*号表示一个星期中的第几天,以星期天开始依次的取值为0~7,0、7都表示星期天

ctime 表示创建时间,1 表示一天前.

其实Linux中不存在文件创建时间,只有访问时间(atime)、修改时间(mtime)、状态改动时间(ctime

可以通过命令 stat + 文件路径 查看时间

删除目录下的指定文件

1
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;

删除目录下的指定类型文件

1
find 对应目录 -mtime +天数 -name "*.jpg" -exec rm -rf {} \;

栗子如下:

1
* 2 * * * find /home/ftp/private/images -mtime +5 -name "*.jpg" -exec rm -rf {} \;

启动定时任务

首先要创建一个crontab,输入命令crontab -e 进入编辑界面,编写你的定时任务,即上面的命令。

也可以不使用crontab -e 命令。可以创建crontab配置文件,其他任何文本编辑器编写命令序列,比如文件名为abc.cron,然后使用命令:crontab abc.cron将命令序列添加到crontab中。

创建好crontab之后,就可以把上面的命令写道 /etc/crontab这个文件中
通过crontab /etc/crontab 命令启动这个定时任务,可以通过 crontab -l 命令查看当下的定时任务

重启服务

为保险起见,最好再重启服务,之后查看下crontab的服务状态
命令如下:

查看crontab服务状态:

1
service crond status

启动服务

1
service crond start

关闭服务

1
service crond stop

重启服务

1
service crond restart

以上就是定时删除指定目下n天前的文件操作流程。

如有问题请再评论区留言

Javen wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!