cron输出文件未记录Symfony控制台异常



对于crontab运行的SF3.4项目,我有一些命令。

我有一个简单的adddate.sh脚本,在每条消息行之前添加日期时间:

while read x; do
echo -n `date +%Y-%m-%d %H:%M:%S`;
echo -n " ";
echo $x;
done

运行cron如下:

* * * * * www-data bin/console the:command >> some.log 2>&1

命令抛出异常时导致some.log

12:12:25 ERROR     [console] Error thrown while running command "the:command". Message: "lol" ["error" => Exception { …},"command" => "the:command","message" => "lol"] []
[Exception]
lol

所以在这种情况下一切都很好。记录异常。

像这样运行cron(使用adddate.sh(:

* * * * * www-data bin/console the:command | adddate.sh >> some.log 2>&1

正确执行导致some.log

2018-01-01 12:24:01 Result of console line1
2018-01-01 12:24:01 Result of console line2

很好,这是意料之中的事!但是

命令抛出异常时的结果:nothing实际上什么都没有。甚至没有一行。系统cron日志中也没有错误。为什么在命令结果中添加"管道"脚本会停止记录异常消息?

unix管道将一个命令的标准输出连接到另一个的标准输入。https://en.wikipedia.org/wiki/Pipeline_%28Unix%29

异常消息似乎打印为标准错误。尝试在管道之前将stderr重定向到stdout:

* * * * * www-data bin/console the:command 2>&1 | adddate.sh >> some.log

最新更新