Eu tenho um programa que preciso executar na inicialização, ele tem saída em stdout e stderr que eu quero redirecionar para o log do sistema usando o comando logger. O que tenho no meu script de inicialização é o seguinte:
/ home / dirname / application_name -v | logger 2> & 1 &
Isso está redirecionando o stdout para o syslog, mas o stderr está chegando ao console, então preciso refinar o comando.
shell
io-redirection
stdout
stdin
bassê fred
fonte
fonte
>&
: tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlRespostas:
Você precisa combinar a saída de STDERR e STDOUT antes de conectá-la
logger
. Tente isso:Exemplo
Você também pode usar a notação abreviada aqui, se usada com cautela em um shell Bash real (para não confundir com o Dash):
NOTA: Isso é equivalente a
<cmd1> 2>&1 | <cmd2>
. Novamente, use apenas o descrito acima ao usar um shell Bash real de maneira interativa, seria uma boa maneira de abordá-lo.trecho de ABSG
Referências
fonte
dash
tentar executar o script na inicialização apenas para falhar e impedir o processo de inicialização ... bem ... Quando essa sintaxe é mencionada, deve estar sempre no contexto do interativas conchas única , ou, pelo menos, tal é a minha opinião.2>&1
mas seus avisos são bastante sábios, dado que o exemplo está lidando com startups. Tornarei essas dicas mais proeminentes com um aviso de que elas destinam-se apenas a conchas Bash interativas.dash
, no entanto - é realmente rápido.