Wie kann ich erreichen, dass Crontab bei jeder Ausführung eines Jobs ein eindeutiges Protokoll erstellt?

Wie kann ich erreichen, dass Crontab bei jeder Ausführung eines Jobs ein eindeutiges Protokoll erstellt?

Hier ist der Crontab-Job

/usr/local/bin/python2.7 /home/scripts/script.py >> /home/scripts/logs/log.log 2>&1

Wie erstelle ich bei jeder Ausführung des Jobs ein neues Protokoll?

Ich finde es ok, bei jeder Generierung der Protokolldatei einen steigenden Zähler hinzuzufügen. Ich weiß nicht, wie das geht.

Muss ich dafür wirklich einen weiteren Cron-Job ausführen?

Antwort1

Mit dem folgenden Befehl können Sie dateeinen eindeutigen Dateinamen generieren:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/"`date +\%d\%m\%y_\%H\%M\%S`".log 2>&1

BEARBEITEN:Achten Sie darauf, die Prozentzeichen zu maskieren( \%). Sie haben einspezielle Bedeutungin cron und die Crontab gibt einen Fehler zurück.

<date_time>.logAuf diese Weise wird bei jeder Ausführung Ihres Jobs eine neue Protokolldatei (mit dem Namen ) erstellt.

$ date; touch "`date +%d%m%y_%H%M%S`.log"
  Tue Sep 25 04:39:25 CEST 2012
$ ls *log
  250912_043925.log

Vorausgesetzt, Ihr Skript wird nicht öfter als einmal pro Sekunde ausgeführt (was nicht der Fall sein kann, wenn Sie eine einfache Crontab ausführen), sollte alles einwandfrei funktionieren.

Wenn Ihr Skript, wie in den Kommentaren vorgeschlagen, von verschiedenen Benutzern ausgeführt wird, können Sie den Benutzernamen zum Namen der Protokolldatei hinzufügen:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/$(echo -n `whoami`_`date +\%d\%m\%y_\%H\%M\%S`).log 2>&1

verwandte Informationen