Wie leite ich die Ausgabe von Cron in eine Protokolldatei um und stelle einen Zeitstempel voran?

Wie leite ich die Ausgabe von Cron in eine Protokolldatei um und stelle einen Zeitstempel voran?

Die meisten Protokolle auf meinem Mac haben vor der Ausgabenachricht einen Zeitstempel wie diesen:

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

Ich führe eine ausführbare Datei in cron aus und möchte statt E-Mail alle Informationen in eine Protokolldatei ausgeben und jeder Zeile vor der Ausgabe einen Zeitstempel hinzufügen. Ich verwende >>zum Anhängen an eine einzelne Datei.

Dies ist meine Crontab:

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

Dies ist, was ich in urlwatch.log bekomme

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

Wie kann ich erreichen, dass die Ausgabe folgendermaßen aussieht:

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

Ich habe viele verschiedene Vorschläge aus dem Internet ausprobiert und hatte kein Glück. Wenn das Speichern in einer Textdatei einfacher ist, funktioniert das auch.

Habe das hier probiert, was dem nahe kommt:

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

Die Ausgabe in der Protokolldatei sieht folgendermaßen aus:

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

Antwort1

Wenn Sie über Folgendes verfügen (oder Folgendes erhalten können)selbstgebrauteszum Beispiel) diets TichStamp-Dienstprogramm, dann sollten Sie in der Lage sein, etwas zu tun wie

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

( /path/to/tsnormalerweise /usr/bin/tsauf Linux-Systemen; unter OSX kann es ein anderer Ort sein). Von man ts:

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

Wenn Sie ein anderes Zeitformat als das Standardformat angeben möchten, können Sie dies tun. Denken Sie jedoch daran, dass das %Vorzeichen eine besondere Bedeutung hat cronund maskiert werden muss. Siehe zum Beispiel

Möglicherweise stellen Sie fest, dass Zeilengruppen den gleichen Zeitstempel erhalten.Maikann daran liegen, dass das Programm, das sie erzeugt, seine Ausgabe puffert. Wenn eines der Dienstprogramme unbufferoder stdbuffür Ihr System verfügbar ist,Maimöglich sein, die Zeilenpufferung wie hier beschrieben zu erzwingen:

verwandte Informationen