Se estiver disponível em seu sistema, use unbuffer . Deve ser tão fácil quanto:
unbuffer ping -D localhost 2>&1 | unbuffer sed 's/^\[\([0-9]*\.[0-9]*\)\]\(.*$\)/echo "['date -d @ +"%Y-%m-%d %H:%M:%S"'] "/e' | tee -a ping.log
A seguinte cadeia de comandos é para
ping com datestamp (UNIX),
converta o registro de data do UNIX em um formato mais legível e
saída para o terminal e um arquivo de log.
ping -D localhost 2>&1 | sed 's/^\[\([0-9]*\.[0-9]*\)\]\(.*$\)/echo "['date -d @ +"%Y-%m-%d %H:%M:%S"'] "/e' | tee -a ping.log
O problema é que, como está escrito, a saída parece estar em buffer em pedaços de quase um minuto ou ~ 50 linhas, ao contrário da saída usual de segundo a segundo e linha por linha do ping.
O que está causando o buffering e como ele pode ser evitado?
Se estiver disponível em seu sistema, use unbuffer . Deve ser tão fácil quanto:
unbuffer ping -D localhost 2>&1 | unbuffer sed 's/^\[\([0-9]*\.[0-9]*\)\]\(.*$\)/echo "['date -d @ +"%Y-%m-%d %H:%M:%S"'] "/e' | tee -a ping.log
Tags bash