crontab 中的 bash 命令不起作用

crontab 中的 bash 命令不起作用

我有一个每分钟运行一次并删除一些目录和文件的 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 - 你确定要强制递归删除吗 - 特别是所有子目录上的自动化过程?

相关内容