从shell脚本和cron运行脚本的不同邮件
问题描述:
我有一个执行命令的perl
脚本。我将此命令的输出保存到一个数组,并检查输出中的内容以向我发送成功或失败消息。从shell脚本和cron运行脚本的不同邮件
这工作正常,当我运行脚本本身。但是,当我安排脚本作为cronjob
运行时,无论输出如何,我都会收到失败的邮件。
我使用脚本中的所有abs paths
并知道cron正在执行,因为我在我的日志中看到command is executed successfully
。
有人能告诉我为什么区别?
需要注意的一件事是,该命令需要大约一分钟才能完成执行,并且脚本正在等待直到执行该命令以检查输出。所以当我运行脚本时,我在邮件中看到了一些延迟。但在cron中,我在运行时立即收到一封邮件。我假定cron不在等待命令执行并检查输出。
难道会是这样吗?
答
从crontab运行时,不能依赖任何环境变量,TTY或路径。听起来你已经有了路径排序,但邮件可能期望知道关于你的事情。尝试在没有环境的情况下运行脚本,以获得有关您的问题的有意义的消息:su {your_name} -c {您的脚本}
真棒,Wayne。我像你说的那样运行了命令,注意到cron无法加载脚本运行的lib文件。我现在从脚本中的包装器加载它。 感谢您的快速响应。 – user3164754