Saída não redirecionando para o arquivo

2

Estou sentindo estranheza (ou melhor, mostrando a ignorância do Linux).

Eu quero aprender a distribuição de probabilidade de solicitações de ping, então eu pensei em fazer ping em algum site aleatório por um tempo, grep a saída para salvar apenas o ms e, em seguida, redirecionar para um arquivo. Eu faço isso.

ping www.doggiedooley.com | grep -o "[[:digit:]]*.[[:digit:]]* ms" > ping.txt

Eu tinha grandes esperanças para este comando, mas mesmo que o arquivo seja criado, ele não contém nada, mesmo depois de um tempo. Se eu remover o redirecionamento, a saída será mostrada. Eu posso redirecionar a saída com sucesso para outro terminal.

ping www.doggiedooley.com | grep -o "[[:digit:]]*.[[:digit:]]* ms" > /dev/pts/1

Por que o primeiro comando não está funcionando corretamente?

    
por broncoAbierto 11.04.2013 / 22:31

1 resposta

5

Parece um problema de buffer stdout. Você pode desativá-lo antes de redirecionar com:

stdbuf -o0

Então use:

 ping www.doggiedooley.com | stdbuf -o0 grep -o "[[:digit:]]*.[[:digit:]]* ms" > ping.txt

Ou use a opção -c de ping para limitar o envio de pacotes.

    
por Nykakin 11.04.2013 / 22:57