Você pode prefixar cada linha escrita com tee com a data e hora atuais?

4

Estou usando o comando 'tee' para capturar os resultados de um longo comando bash em um arquivo.

O arquivo que eu emito com tee de alguma forma prefixa cada linha com o timestamp de quando a linha foi gravada? Estou procurando uma solução na qual cada linha teria um valor diferente de data e hora ... não o mesmo valor prefixado em cada linha.

A razão pela qual eu quero isso é que seria muito útil saber quando cada linha foi emitida mais tarde, quando eu li o arquivo para entender onde estavam as áreas lentas.

    
por user2917346 02.02.2017 / 11:57

1 resposta

3

Se tee não pode fazer alguma coisa, canalize-o para um programa que faz. moreutils tem uma ferramenta chamada ts cuja finalidade é exatamente esta:

$ echo test | ts
Feb 02 13:17:27 test

Se você quiser registrar o tempo em tudo , o uso deve ser óbvio:

myapp | ts | tee app.log

Outras combinações são possíveis; por exemplo, para marcar apenas a saída de tela ou apenas o arquivo de log:

myapp | tee app.log | ts
myapp | tee >(ts > app.log)
myapp | tee /dev/tty | ts > app.log
myapp | pee "ts > app.log" "cat"
myapp | pee "cat > app.log" "ts"

(Sim, esse último também é de moreutils.)

    
por 02.02.2017 / 12:19