我有一个执行命令的perl
脚本。我将此命令的输出保存到数组并检查输出上的内容以向我发送成功或失败消息。
当我运行脚本本身时,这工作正常。但是当我安排脚本作为cronjob
运行时,无论输出如何都会收到失败的邮件。
我正在使用脚本中的所有abs paths
并知道cron正在执行,因为我在日志中看到command is executed successfully
。
有人可以告诉我为什么会有区别吗?
有一点需要注意的是,该命令需要大约一分钟才能完成执行,并且脚本正在等待执行命令以检查输出。所以当我运行脚本时,我看到邮件有点延迟。但是在cron中,我会在运行时立即收到邮件。我假设cron没有等待命令执行并检查输出。
可能是这种情况吗?
答案 0 :(得分:2)
从crontab运行时,您不能依赖任何环境变量,TTY或路径。听起来你已经对路径进行了排序,但邮件可能希望了解你的情况。尝试在没有环境的情况下运行脚本,以获取有关您的问题的有意义的消息:su {your_name} -c {your script}