É possível canalizar stderr enquanto mantém stdout? [duplicado]

2

Eu tenho um longo processo em execução que está gravando informações de status para stdout e registrando informações de depuração para stderr.

Eu gostaria de enviar a saída do stderr para logger , para que qualquer coisa escrita no stderr acabe indo para o syslog, enquanto ao mesmo tempo possa ler o processo 'stdout'.

É possível fazer isso?

    
por Grodriguez 04.10.2016 / 17:55

1 resposta

2
{ cmd 2>&1 >&3 3>&- | logger 3>&-; } 3>&1

A idéia é que o stdout outer é duplicado no descritor de arquivo (fd) 3, e restaurado por cmd no stdout, enquanto o próprio descritor de arquivo 2 (stderr) do cmd vai para o pipe logger.

O 3>&- é para fechar esse fd para os comandos cmd e logger depois de ter cumprido seu propósito, já que esses comandos não precisarão / usarão.

    
por 04.10.2016 / 18:00