答案1
node "$SUMAN_PROJECT_ROOT/server.js" &> ${LOG_FILE} &
首先让我们检查一下工作命令。
这表示获取node
命令的标准输出和标准错误,然后重定向两个都到日志文件。 (并且您需要引用您的变量;如果 LOG_FILE 包含空格,它将中断。请参阅为什么我的 shell 脚本会因为空格或其他特殊字符而卡住?)
该命令被放在后台,&
但这并不真正相关。
node "$SUMAN_PROJECT_ROOT/server.js" | bunyan -o short &> ${LOG_FILE} &
你说的这个命令不起作用。其作用是仅获取node
命令的标准输出并将其传递给bunyan
命令,然后重定向标准输出和标准错误bunyan
命令的到日志文件。
既然你说这不起作用,那么明显的结论是你感兴趣的命令输出node
正在发送到其标准错误,不是它的标准输出。使用&|
或使用node ... 2>&1 | ...
所以标准错误也被重定向。
(&|
是一种羞辱,不可移植,但&>
我想你并不关心这一点。)