La mayoría de los registros en mi Mac tienen una marca de tiempo antes del mensaje de salida como este:
Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.
Estoy ejecutando un ejecutable en cron y en lugar de usar el correo quiero enviar toda la información a un archivo de registro y agregar una marca de tiempo a cada línea delante de la salida. Estoy usando >>
para agregar a un solo archivo.
Este es mi crontab:
SHELL=/bin/bash
MAILTO=""
* 6-23 * * * /usr/local/bin/urlwatch >> /Users/john/cronjobs/urlwatch.log
Esto es lo que obtengo en urlwatch.log
UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
¿Cómo hago para que la salida se vea así?
Nov 14 17:55:24 - UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
Probé muchas sugerencias diferentes de toda la web y no tuve suerte. Si guardar en un archivo de texto es más fácil, también funcionará.
Probé esto que está cerca:
* 6-23 * * * (date && /usr/local/bin/urlwatch) >> /Users/john/cronjobs/urlwatch.log
La salida en el archivo de registro se ve así:
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/)
Respuesta1
Si tiene (o puede obtener, decerveza caserapor ejemplo) elts
tyo mesutilidad tamp, entonces deberías poder hacer algo como
/usr/local/bin/urlwatch | /path/to/ts >> /Users/john/cronjobs/urlwatch.log
( /path/to/ts
normalmente estaría /usr/bin/ts
en sistemas Linux; puede ser otra ubicación en OSX). De man ts
:
DESCRIPTION ts adds a timestamp to the beginning of each line of input.
Si desea especificar un formato de hora no predeterminado, puede hacerlo, pero recuerde que el %
signo tiene un significado especial cron
y debe tener un formato de escape. ver por ejemplo
Es posible que descubra que a grupos de líneas se les asigna la misma marca de tiempo, es decir,puededebe ser porque el programa que los genera está almacenando en un buffer su salida. Si las utilidades unbuffer
o stdbuf
están disponibles para su sistema,puedeSerá posible aplicar el almacenamiento en búfer de línea como se describe aquí: