如何找出 cron 无法运行脚本的原因

如何找出 cron 无法运行脚本的原因

我需要一些故障排除帮助。

我正在尝试运行一个脚本,该脚本每天将一个目录的内容复制到另一个目录中。我可以使用./config-copy.shetc手动成功运行它

SOURCE="/home/oxidized/.config/oxidized/logs/"
DESTINATION="/mnt/sync"
sudo cp -r "$SOURCE"* "$DESTINATION"

该脚本位于用户 oxidized 的主目录中。oxidized 用户是 的成员sudo

我在 crontab 中有这个条目:

17 00 * * * /home/oxidized/config-copy.sh

这应该每天下午 3 点运行,但我可以看到目标目录中的文件没有被更新。

我尝试过使用和不使用 sudo 来更改脚本中的复制命令,但没有什么区别。

/var/log/syslog或 中没有任何有用的东西/var/log/cron.log

我已经尝试重新启动 cron 进程。

答案1

这是因为您的"$SOURCE"/*已被您当前的(非)shell 扩展sudo,我认为 无法通过 访问$USER

更好的方法是展开root文件列表并进行复制:

sudo find "$SOURCE" -type f -print0 | \
  xargs  -0 -r sudo cp -t "$DEST"

相关内容