Как перенаправить вывод в файл журнала из cron и добавить метку времени?

Как перенаправить вывод в файл журнала из cron и добавить метку времени?

Большинство журналов на моем Mac имеют отметку времени перед выходным сообщением, например:

Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.

Я запускаю исполняемый файл в cron и вместо использования почты хочу выводить всю информацию в файл журнала и добавлять временную метку к каждой строке перед выводом. Я использую >>для добавления в один файл.

Вот мой кронтаб:

SHELL=/bin/bash
MAILTO=""
* 6-23 * * * /usr/local/bin/urlwatch >> /Users/john/cronjobs/urlwatch.log

Вот что я получаю в urlwatch.log

UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)

Как сделать так, чтобы вывод выглядел так:

Nov 14 17:55:24 - UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)

Я перепробовал много разных предложений из интернета, но ничего не вышло. Если сохранение в текстовый файл проще, то это тоже сработает.

Попробовал это, близко:

* 6-23 * * * (date && /usr/local/bin/urlwatch)  >> /Users/john/cronjobs/urlwatch.log

Вывод в файле журнала выглядит следующим образом:

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/)

решение1

Если у вас есть (или вы можете получить отдомашнее пивонапример)ts твремясутилиту tamp, то вы сможете сделать что-то вроде

/usr/local/bin/urlwatch | /path/to/ts >> /Users/john/cronjobs/urlwatch.log

( /path/to/tsобычно /usr/bin/tsв системах Linux; в OSX это может быть другое место). Из man ts:

DESCRIPTION
       ts adds a timestamp to the beginning of each line of input.

Если вы хотите указать нестандартный формат времени, то вы можете это сделать, но помните, что знак %имеет особое значение cronи должен быть экранирован. См. например

Вы можете обнаружить, что группам строк присвоена одна и та же временная метка, т.е.можетбыть потому, что программа, которая их генерирует, буферизует свой вывод. Если для вашей системы доступна утилита unbufferили , онаstdbufможетможно реализовать буферизацию строк, как описано здесь:

Связанный контент