Wie kann ich am Ende des Namens der Ausgabedatei eines Cron-Jobs einen Zeitstempel hinzufügen?

15774
ariefbayu

Ich möchte jede Crontab-Ausgabe in einer separaten Datei verfolgen. Normalerweise verwende ich diesen Eintrag als crontab-Eintrag:

1 * * * * root php /mix/dostuff.php > /tmp/dostuff.txt 

Jetzt möchte ich es statt machen zu schreiben /tmp/dostuff.txt, zu/tmp/dostuff-YYYY-MM-DD-HH-II-SS.txt

Ich könnte den Datumsteil bekommen, indem ich Folgendes verwendet:

TIMESTAMP=`date +%Y-%m-%H\ %k:%M:%S` 

Nun, wie stecke ich diesen TIMESTAMP in die Ausgabedatei?

5

3 Antworten auf die Frage

8
Etienne Dechamps
1 * * * * root php /mix/dostuff.php > "/tmp/dostuff-`date +\%Y-\%m-\%H\ \%k:\%M:\%S`.txt" 

So einfach ist das.

funktioniert nicht, Crontabs werden nicht in derselben Umgebung wie eine Standard-Shell ausgewertet. John T vor 14 Jahren 0
Ich sehe nicht, wie das hier ein Problem darstellen würde. Die cron-Umgebung reicht für diesen Befehl aus. Außerdem funktioniert es, ich habe es gerade selbst getestet. Etienne Dechamps vor 14 Jahren 2
cron parst die Datei, nicht `/ bin / bash`, deshalb. John T vor 14 Jahren 0
crontab (5): "Das" sechste "Feld (der Rest der Zeile) gibt den auszuführenden Befehl an. Der gesamte Befehlsteil der Zeile bis zu einer Zeilen- oder% -Zeile wird von / bin / ausgeführt. sh oder von der in der SHELL-Variablen der Crontab-Datei angegebenen Shell. " Sie können sogar ganze Shellskripte in eine Crontab-Zeile schreiben, wenn Sie möchten! Etienne Dechamps vor 14 Jahren 3
Der Abstand zwischen Datum und + ist sehr wichtig, nur für den nächsten Mann, der mitkommt jcollum vor 12 Jahren 1
root php /mix/dostuff.php> / tmp / dostuff - $ (Datum + \% Y - \% m - \% H \ \ k: \% M: \% S) .txt` hat für mich funktioniert. Keine doppelten Anführungszeichen für einfache Dateinamen und `$ ()` anstelle von hässlichen Backticks erforderlich. Erwin Brandstetter vor 10 Jahren 0
2
ursuleacv

Auf CentOS 6.6 verwende ich

*/10 * * * * /usr/bin/php -q /var/www/script.php > cron-job-log-$(date +\%Y\%m\%d\%H\%M\%S).txt 

Es wird alle 10 Minuten eine Datei erstellt

cron-job-log-20150401124001.txt 
1
John T

crontabs werden in einer anderen Umgebung als die Standard-Shell ausgeführt. Sie können also ein kleines Shell-Skript in Ihrem Home-Verzeichnis mit etwas wie dem folgenden verwenden (wir nennen es script.sh):

#!/bin/bash php /mix/dostuff.php > /tmp/dostuff-`date +%Y-%m-%H\ %k:%M:%S`.txt exit 

Ändern Sie dann die Berechtigungen dieses Skripts, um sicherzustellen, dass es ausführbar ist. 755 sollte in Ordnung sein. Dann in deiner Crontab:

1 * * * * root /home/yourusername/script.sh 
Ich verstehe. danke für die aufklärung. ariefbayu vor 14 Jahren 0
Beachten Sie, dass% Y-% m-% H nicht die übliche Kombination von Jahr-Monat-Datum ist. Versuchen Sie `% Y-% m-% d`! shuckc vor 9 Jahren 1