几天来,我一直在努力解决这个问题。谷歌有很多答案,但似乎没有一个能解决这个问题。我希望其他人遇到过这个问题并且知道如何解决它。
所以问题是:我想使用 Cron 删除超过 3 天的文件。
我的 crontab:
# m h dom mon dow command
SHELL=/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin
*/1 * * * * /root/insert.sh
0 0 * * * /root/backup.sh
*/1 * * * * find /root/backups -mtime +3 -exec /bin/rm {} \;
有了这个 Crontab /root/backup.sh
,每天晚上都会在午夜运行,这很有效。此外/root/insert.sh
(运行 php 脚本将一些数据移动到另一个文件夹)每分钟工作一次。
我去了 /root/backups 并手动输入find /root/backups -mtime +15 -exec rm {} \;
了它。它删除了所有超过 15 天的文件。
确认 cron 正在运行这行代码。我跑了tail -f /var/log/syslog | grep CRON
(我正在运行 ubuntu server 13.04)
Jul 24 07:47:01 myServer CRON[13934]: (root) CMD (find /root/backups -mtime +3 -exec rm {} \;)
Jul 24 07:48:01 myServer CRON[13937]: (root) CMD (/root/insert.sh)
Jul 24 07:48:01 myServer CRON[13938]: (root) CMD (find /root/backups -mtime +3 -exec rm {} \;)
Jul 24 07:49:01 myServer CRON[13954]: (root) CMD (/root/insert.sh)
Jul 24 07:49:01 myServer CRON[13955]: (root) CMD (find /root/backups -mtime +3 -exec /bin/rm {} \;)
所以你可以看到它正在运行。我已经尝试在我的 crontab 中放置一个 PATH 。我试过把/bin/rm
而不是rm
. 有人建议确保 crontab 的末尾有一个 CR。确实如此。
即使它是 root 的 cron,我也这样做了chmod a+rwx backups
,所以任何人都可以修改这个文件夹。那里仍然没有运气。
我已经在我的 crontab 中尝试过rm -fr /root/backups
,/bin/rm -fr /root/backups
但没有奏效。如果我这样做/bin/rm -fr /root/backups >> /root/logmeplease.log 2>&1
并且没有任何记录。
最后,我尝试将其放入 shell 脚本中。
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
find /root/backups -mtime +5 -exec /bin/rm {} \;
同样,这在文件底部有一个 CR。该脚本通过手动运行来工作,但 cron 不会执行它。我也尝试过#!/bin/bash -l
并且#!/bin/bash -x
在顶部。
关于为什么我的根的 cron 不会删除任何文件,我是否缺少一些非常简单的东西?系统日志显示它正在运行脚本或命令?
感谢您对此的任何帮助!