安排 cronjob 删除 X 天之前修改的文件

Posted

技术标签:

【中文标题】安排 cronjob 删除 X 天之前修改的文件【英文标题】:Schedule cronjob to remove files modified before X days 【发布时间】:2016-03-28 13:09:20 【问题描述】:

我想创建并安排 cronjob 以删除 x 天之前修改的文件

我已为此采取了以下步骤

创建的 Shell 脚本(名称:Script.sh)如下所示

#!/bin/sh

15 2 * * 2-6  find  /usr/sch/cbm/files/newui/log -type f -mtime +2 exec rm  \;

我已将此文件放在“/var/spool/cron/crontabs”和 usr/bin 文件夹中,因为我不确定该放在哪里。

当我使用 Crontab -e 命令检查时,如下图所示

但我没有发现对我的文件有任何影响。我不确定我的工作是否已安排好或我还需要做其他事情

请指导我

【问题讨论】:

创建一个单独的脚本,如/home/myself/admin_scripts/cleanlogs.sh 并从 crontab 运行该脚本。在脚本中,您可以进行任何您想要的调试/记录。 更新了 shell 脚本文件:#!/bin/bash find /usr/Schneider/cbm/files/newui/log -type f -mtime +2 exec rm \;并使用以下命令创建了 cronjob:“0,30 * * * * /usr/local/bin/script.sh >> /home/vsp004/Cronlog.txt 2>&1” 在日志文件中获取以下内容“sh: /usr/local/ bin/script.sh: 无法执行” chmod +x /usr/local/bin/script.sh 【参考方案1】:
crontab <file>

上面的文件在哪里,会将文件放在正确的位置,并确保 cron 运行它时一切顺利。

crontab -l

将显示当前登录用户的 cron 作业列表。

请注意,文件本身不会执行,因此不需要 #!/bin/sh 作为第一行。它只是一个 cron 解释的数据文件。

man 5 crontab

man 1 crontab

了解更多信息。

【讨论】:

【参考方案2】:

您必须在执行该作业的用户的 cron 文件中插入 cron 作业行。

    su - 用户名 crontab -e 添加 cron 作业行 保存并退出

x 天前删除文件的示例

00 00 * * * 查找 /path/to/folder -mtime +x -exec rm \;

或者您可以对文件夹中存在的某些文件执行此操作 例如删除以 .log 结尾的文件

00 00 * * * find /path/to/folder/*.log -mtime +x -exec rm \;

【讨论】:

以上是关于安排 cronjob 删除 X 天之前修改的文件的主要内容,如果未能解决你的问题,请参考以下文章

bos 第3天(easyui弹窗边界问题取派员的添加修改和批量删除)

Powershell 查找删除30天之前的文件

怎么删除.log的日志文件?

linux 删除指定日期之前的文件

批处理如何实现删除当前目录内最近修改时间3天以外的所有文件?

shell脚本删除30天之前日志