Perl 脚本在交互式 shell 中运行良好,但不能作为 cron 作业运行

Perl 脚本在交互式 shell 中运行良好,但不能作为 cron 作业运行

我已经安装了迪维什用于一些备份。我已经初始化了一个保管库(主机)。现在我使用以下脚本来运行它:

#!/bin/sh 
/sbin/dirvish-expire --quiet && /sbin/dirvish-runall --quiet
rc=$?
exit $rc

问题是我找不到更多的方法来解决它。由于某种原因,第二个命令dirvish-runall --quiet在作为 cron 作业运行时以状态 1 退出。当它处于交互模式时,它可以正常工作,没有任何问题。

你能帮忙吗?

答案1

@TomHunt 在他的评论中指出了这个问题,并且他的答案值得赞扬。我只是想扩展他的观点,以便将来的 cron 作业问题可以更轻松地解决。

我的建议是捕获您当前的(功能)环境以及 cron 作业脚本的环境,然后比较两者以查看缺少的内容。请记住,cron 是在引导时启动的,并且永远不会读取任何个人 shell 环境文件(~/.bashrc、~/.bash_profile 或从那里加载的任何其他文件)。

  1. set | sort > /tmp/set.out
  2. 暂时添加set | sort > /tmp/cron-set.out到您的 cron 作业的 shell 脚本中
  3. diff /tmp/cron-set.out /tmp/set.out
  4. 找到缺少的环境变量并将它们添加到 cron 作业的 shell 脚本中(同时删除set上面的临时添加)。

相关内容