Linux: redirecionando stdout e stderr

3

Eu quero escrever stdout em um arquivo, mas também imprime stdout e stderr. Eu tentei usar tee:

prog | tee stdout.txt

mas isso faz com que o stderr e o stdout impressos sejam intercalados incorretamente, ou seja, se a saída correta deve ser

OUT1 ERR1
OUT2 ERR2
OUT3 ERR3
OUT4 ERR4

usando tee pode imprimi-los fora de ordem, por exemplo:

ERR1 ERR2
OUT1
OUT2 
OUT3 ERR3 
OUT4
ERR4

Existe alguma maneira de imprimir stdout e stderr para a tela e também gravar o stdout em um arquivo sem devorar a saída impressa?

    
por Lie Ryan 19.05.2011 / 08:42

1 resposta

1

Eu encaminharia o arquivo padrão para um arquivo e, em seguida, usava o final para ver o conteúdo do arquivo à medida que ele é gravado. Isso significa que você precisa ter dois terminais abertos.

Terminal um:

prog > stdout.txt

Terminal dois:

tail -f stdout.txt

Assim, no terminal dois, você verá o conteúdo stdout, como está escrito em stdout.txt, e no terminal um, stderr. Você também pode encaminhar stdout e stderr para um arquivo e fazer a mesma coisa. Nesse caso, você precisa usar prog >& outerr.txt . (Isso funcionará no tcsh, mas você também pode fazer isso no bash).

    
por 22.05.2011 / 21:10