Como posso registrar a data e hora de cada linha produzida por um dispositivo serial?

2

Eu acesso um dispositivo de medição serial via screen /dev/tty.usbserial 9600 . Enquanto o dispositivo está medindo, ele envia seus dados n vezes por segundo em uma linha. Como posso adicionar um timestamp a cada linha (ou a cada poucas linhas, se isso atrasa demais o log)?

Estou no OSX 10.8.2 e uso Terminal.app como meu terminal.

    
por Saaru Lindestøkke 05.03.2013 / 11:26

1 resposta

2

Não consegui encontrar nenhuma maneira de permitir a impressão de timestamps na tela. Em vez disso, criar o arquivo de log da tela e imprimi-lo com o awk funciona bem!

1. Crie (ou edite) ~ / .screenrc para permitir que a tela crie um arquivo de log.

Adicione a configuração de log ao .screenrc (arquivo de configuração da tela) em seu diretório pessoal.

logfile "/path/to/log/file" # Specify log file name with absolute path.
logfile flush 1
deflog on

2. Tela inicial

$ screen /dev/tty.usbserial 9600 -L

Em seguida, a tela começa a criar um arquivo de log. (Existem algumas outras maneiras de criar arquivos de log.)

3. Imprima o arquivo com tail + awk

Execute este comando shell em outra janela de terminal.

$ tail -f screen.log | awk '{ print strftime("%H:%M:%S"), $0; fflush(); }'

Imprime o arquivo de registro com registros de data e hora!

15:41:27 xxx
15:41:28 xxx
15:41:29 xxx
15:41:30 xxx
15:41:31 xxx

Se você quiser imprimir o registro com registros de data e hora na saída padrão e em um arquivo, envie-o para o comando tee.

$ tail -f /path/to/log/file | awk '{print strftime("%H:%M:%S"),$0; fflush();}' | tee /path/to/another/file
    
por 01.02.2017 / 08:27