node "$SUMAN_PROJECT_ROOT/server.js" &> ${LOG_FILE} &
Primeiro, vamos examinar o comando de trabalho.
Isto diz para pegar a saída padrão E erro padrão do comando node
, e redirecionar ambos para o arquivo de log. (E você precisa citar sua variável; ela será interrompida se LOG_FILE incluir espaço em branco. Consulte Por que meu script de shell sufoca em espaços em branco ou outros? caracteres especiais? )
E o comando é colocado em segundo plano com &
, mas isso não é relevante.
node "$SUMAN_PROJECT_ROOT/server.js" | bunyan -o short &> ${LOG_FILE} &
Este comando que você diz não funciona. O que isto faz é pegar SOMENTE a saída padrão do comando node
e passar para o comando bunyan
, então redirecionar a saída padrão e o erro padrão do comando bunyan
para o arquivo de log .
Como você diz que isso não funciona, a conclusão óbvia é que a saída em que você está interessado no comando node
está sendo enviada para seu erro padrão, não sua saída padrão. Use &|
ou use node ... 2>&1 | ...
para que o erro padrão seja redirecionado também.
( &|
é uma base, não é portável, mas é &>
, então imagino que você não se importe com isso.)