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 date
einen 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>.log
Auf 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