Adicionando data e hora a um arquivo de log?

1

Estou executando um arquivo de script. Eu escrevi um loop while dentro do script no qual eu canalizei vários comandos como awk , sed e finalmente estou escrevendo a saída para um arquivo usando o operador > . Eu estou tentando adicionar um carimbo de hora na linha de partida do arquivo (não estou anexando o arquivo).

Sempre que executo o script, é necessário escrever o carimbo de hora, como abaixo, no arquivo:

Carimbo de data / hora

Dados do arquivo

    
por RajuBhai 25.04.2016 / 23:04

5 respostas

1

Eu digo criar um segundo script como este:

#!/bin/bash
echo -e "$(date)\n" # of course format date to your needs
cat <&0
exit $?

Isso funcionará como: (... all your commands & pipes...) | new_script >output.file

Explicado:

Primeiro, faça eco da data e de uma nova linha, depois catenate STDIN e, finalmente, saia com o último código de saída (cat's).

    
por 26.04.2016 / 02:18
1

"logger"

Você também pode querer dar uma olhada em logger , um comando um pouco negligenciado para escrever mensagens no log do sistema (ou diário) no formato de saída de log padrão do sistema. Isso não ajudará se seu aplicativo mantiver seu próprio arquivo de log, mas, dependendo das circunstâncias, pode haver boas razões de design para usar as facilidades de registro padrão do sistema. Apenas trazendo isso para o caso, já que logger adiciona os timestamps para você.

    
por 26.04.2016 / 18:23
0

Provavelmente seria mais fácil simplesmente escrever o horário via data no arquivo e depois acrescentar seus dados a ele depois, algo assim:

date > file
your_code >> file

Examine a manpage of date para encontrar o formato adequado para o seu uso

    
por 26.04.2016 / 02:10
0

adicione o seguinte ou anterior à sua linha 'date "+%Y-%m-%d"' , por exemplo 2016-04-26

no seu código printf "this is the output\t'date "+%Y-%m-%d"'"

será lido como:

this is the output   2016-04-26

você pode usar isso com echo também

você pode fazer outros como:

'date "+%b%d"' , por ex. 26 de abril

para outros formatos, verifique man date

informações adicionais:

'(citações anteriores): substituição de comandos

O caractere (encontrado na tecla com o ~) é muito importante quando usado nos comandos do shell. Isso indica que a substituição de comando é necessária onde quer que seja usada. Portanto, sempre que 'for usado, qualquer parte do comando que estiver entre essas marcas de Backquotes seria executada (como se fosse o único comando) e, em seguida, o resultado desse comando seria substituído no comando de shell original que você digitou. O seguinte explica isso claramente

Fonte: link

    
por 26.04.2016 / 06:00
0

Use o gawk e suas funções de tempo, como neste exemplo:

ping 127.0.0.1 | gawk '{print strftime("%H-%M-%S") ; print $0}'

Opa, acabei de ver, que o OP quer um timestamp no início da saída, não um por linha de entrada como minha sugestão. Sua menção ao laço while, entretanto, implica para mim que os dados continuarão chegando por um tempo, e ele pode querer medir time2output para cada um deles em um ponto.

    
por 26.04.2016 / 18:21