我尝试让我的 cron 作业在 cron 作业失败时输出错误。我创建了一个故意失败的命令来尝试测试这一点,如下所示:
* * * * * php /var/some/nonexistent/script.php >> cronLog.log
我不想使用 MTA,因为 Google Compute Engine 会阻止所有发送到端口 25 的 SMTP 请求,但我在 cronLog.log 中看不到任何内容。我已正确设置权限,并且当 php 脚本成功执行时,我可以毫无问题地写入 cronLog.log。因此,如果在成功的 cron 作业期间输出已成功传输到 cronLog.log,为什么命令失败时它会消失?系统日志中也没有任何东西。我的错误输出去哪里了?
答案1
您没有捕获输出错误消息的 stderr。请尝试
* * * * * php /var/some/nonexistent/script.php >> cronLog.log 2>&1
将2>&1
stderr 重定向到 stdout,而 stdout 本身又重定向到 cronLog.log。