Linux 定时删除7天前的文件

本文介绍了如何编写一个bash脚本,通过find命令在Linux中查找并删除指定目录(如/home/kafka/logs)中10天前的文件,然后设置crontab定时任务,每天22点10分自动执行该脚本进行文件清理。

一、编写脚本

#!/bin/bash
find /home/kafka/logs -mtime +10 -name "*.*" -exec rm -rf {} \;

保存到home目录下的logs_delete.sh

二、解释

# 命令格式
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
# 示例命令,将/home/kafka/logs目录下所有10天前带"."的文件删除
find /home/kafka/logs -mtime +10 -name "*.*" -exec rm -rf {} \;
  • find:Linux的查找命令,用户查找指定条件的文件
  • /home/kafka/logs:想要进行清理的任意目录
  • -mtime:标准语句写法
  • +10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
  • *.*”:希望查找的数据类型,“.jpg"表示查找扩展名为jpg的所有文件,”"表示查找所有文件,这个可以灵活运用,举一反三
  • -exec:固定写法
  • rm -rf:强制删除文件,包括目录
  • {} \;:固定写法,一对大括号+空格++;

三、设置定时任务

加入crontab

crontab -e
10 22 * * * /bin/sh /home/logs_delete.sh

这个表示为,每天22点10分执行这个脚本。

Linux系统中,配置定时任务自动删除文件通常使用 `cron` 工具来实现。`cron` 是 Linux 中的一个守护进程,用于按照设定的时间周期性地执行特定的任务,例如清理日志文件、备份数据等。 ### 配置步骤 #### 1. 编写删除文件的脚本 首先需要编写一个 Shell 脚本来完成删除操作。以下是一个示例脚本,用于删除指定路径下 `.log` 类型且修改时间超过30文件: ```bash #!/bin/bash # 设置要删除的目录 LOG_DIR="/var/log/myapp/" # 删除30的.log文件 find $LOG_DIR -type f -name "*.log" -mtime +30 -exec rm -rf {} \; ``` 将上述脚本保存为 `auto-del-old-logs.sh`,并赋予其可执行权限: ```bash chmod +x auto-del-old-logs.sh ``` #### 2. 编辑 crontab 文件 使用 `crontab -e` 命令打开当用户的定时任务配置文件,并添加一行来定义执行脚本的时间周期。例如,若希望每凌晨2点执行该脚本,则可以添加如下内容: ``` 0 2 * * * /path/to/auto-del-old-logs.sh ``` 上述 cron 表达式含义如下: - `0`:分钟(0 分) - `2`:小时(2 点) - `*`:日期(每) - `*`:月份(每月) - `*`:星期几(每周每) #### 3. 验证脚本执行情况 为了确保脚本能正常运行,可以在命令行中手动执行一次脚本进行测试: ```bash /path/to/auto-del-old-logs.sh ``` 同时,也可以查看 `/var/log/cron` 或 `/var/log/syslog`(取决于发行版)中的日志信息,确认定时任务是否被正确触发和执行。 --- ### 示例:删除空目录及旧文件 如果还需要删除空目录以及7的所有文件,可以扩展脚本如下: ```bash #!/bin/bash # 设置删除路径 dir_path="/home/uploadPath/hardware/face-rec" # 设置时间限制为7 limit_days=7 # 删除7的空目录 find $dir_path -type d -empty -mtime +$limit_days -exec rm -rf {} + # 删除7文件 find $dir_path -type f -mtime +$limit_days -exec rm -rf {} + ``` 然后同样将其加入 crontab 中定期执行。 --- ### 注意事项 - 在编写脚本时,请务必确保路径和条件表达式准确无误,避免误删重要文件。 - 可以通过 `crontab -l` 查看当用户已配置的定时任务列表。 - 若脚本涉及敏感操作,建议添加日志记录功能以便追踪执行结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallFatMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值