Como redirecionar a saída para um arquivo de log do cron e anexar o carimbo de data/hora?

Como redirecionar a saída para um arquivo de log do cron e anexar o carimbo de data/hora?

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/tsnormalmente estaria /usr/bin/tsem 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 crone 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 unbufferou stdbufestiver disponível para o seu sistema, elepoderiaserá possível impor o buffer de linha conforme descrito aqui:

informação relacionada