A maioria dos logs no meu Mac tem um carimbo de data/hora antes da mensagem de saída como esta:
Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.
Estou executando um executável no cron e, em vez de usar o email, quero enviar todas as informações para um arquivo de log e adicionar um carimbo de data/hora a cada linha na frente da saída. Estou usando >>
para anexar a um único arquivo.
Este é o meu crontab:
SHELL=/bin/bash
MAILTO=""
* 6-23 * * * /usr/local/bin/urlwatch >> /Users/john/cronjobs/urlwatch.log
Isso é o que recebo em urlwatch.log
UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
Como faço para que a saída fique assim:
Nov 14 17:55:24 - UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
Tentei muitas sugestões diferentes na web e não tive sorte. Se salvar em um arquivo de texto for mais fácil, isso também funcionará.
Tentei isso que está próximo:
* 6-23 * * * (date && /usr/local/bin/urlwatch) >> /Users/john/cronjobs/urlwatch.log
A saída no arquivo de log é semelhante a esta:
Sun Mar 15 13:35:00 CDT 2020
UNCHANGED: (03)RansomWhere? Objective-See (https://objective-see.com/products/ransomwhere.html)
UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
UNCHANGED: (02)urlwatch webpage (https://thp.io/2008/urlwatch/)
Responder1
Se você tem (ou pode obter, decerveja caseirapor exemplo) ots
teuéutilitário tamp, então você poderá fazer algo como
/usr/local/bin/urlwatch | /path/to/ts >> /Users/john/cronjobs/urlwatch.log
( /path/to/ts
normalmente estaria /usr/bin/ts
em sistemas Linux; pode ser outro local no OSX). De man ts
:
DESCRIPTION ts adds a timestamp to the beginning of each line of input.
Se você quiser especificar um formato de hora não padrão, poderá fazê-lo, mas lembre-se de que o %
sinal tem um significado especial cron
e deve ser escapado. Veja por exemplo
Você pode descobrir que grupos de linhas recebem o mesmo carimbo de data/hora - issopoderiaser porque o programa que os está gerando está armazenando em buffer sua saída. Se o utilitário unbuffer
ou stdbuf
estiver disponível para o seu sistema, elepoderiaserá possível impor o buffer de linha conforme descrito aqui: