Большинство журналов на моем 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
можетможно реализовать буферизацию строк, как описано здесь: