我有一个每分钟运行一次并删除一些目录和文件的 crontab。
我的 cron 看起来像这样
* * * * * bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1
在我的日志中我可以看到命令正在运行
CRON[57937]: (kahoadmin) CMD (bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1)
这是我的脚本文件
#!/bin/bash
ROOTDIR="/var/www/html/Database/Backup/Backups/*"
sudo find $ROOTDIR -mtime +5 | xargs rm -f -r
如果我直接运行此脚本,它会运行并删除目录和文件。只有在 crontab 中它才不起作用
有人能帮我找出这里出了什么问题吗?
答案1
我猜你的 sudo 权限是错误的(但也有可能你在从 cron 运行时缺少 find 和 xargs 的路径)
如果是我,我会 - 1. 将文件放入 /etc/crontab 并以 root 身份运行。2. 将其更改为具有较少依赖项的 1 行脚本(我经常这样做)。我会将以下行放入 /etc/crontab
* * * * * root /bin/find /var/www/html/Database/Backup/Backups mtime +5 -exec rm -rf {} +
它可以做同样的事情,而不依赖于 xargs
我注意到你正在做-rf - 你确定要强制递归删除吗 - 特别是所有子目录上的自动化过程?