Ich möchte eine Protokolldatei für ein Cron-Skript erstellen, dessen Protokolldateiname die aktuelle Stunde enthält. Dies ist der Befehl, den ich versucht habe:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Leider bekomme ich diese Meldung, wenn das läuft:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Ich habe versucht, dem date
Teil auf verschiedene Arten zu entkommen , aber ohne viel Glück. Ist es möglich, dies in einer Crontab-Datei inline auszuführen, oder muss ich ein Shell-Skript erstellen, um dies zu tun?
date +\%Y\ \%m\ \%d\ \%H:\%M:\%S
-cronlogSie können Ihre Befehle auch in eine Shell-Datei einfügen und die Shell-Datei dann mit cron ausführen.
jobs.sh
cron
quelle
Wenn Sie die Datumsformatierungszeichenfolge als Variable definieren möchten (um zu vermeiden, dass die gesamte Zeichenfolge dupliziert wird), müssen Sie sie NICHT mit einem Escape- Zeichen versehen
%
und NICHT eingeben$()
Wenn Sie beispielsweise die Zeichenfolge deklarieren, schreiben Sie einfach:
Dann schreibe cron statement mit
$($VARIABLE_NAME)
so:Dank cyberx86 , seine / ihre Antwort auf ServerFault könnte mehr abgeschlossen werden:
quelle
In cron können Sie diese einfache Syntax verwenden:
quelle
-d
Option hinzugefügt , die in der Frage nicht verwendet wird (und Sie haben sie nicht erläutert). Wie rechtfertigen Sie diese "einfache Syntax"?Alle obigen Antworten verwenden doppelte Anführungszeichen (nicht alle haben für mein Setup funktioniert). Das hat bei mir funktioniert:
quelle
Eine grundlegende Lösung:
$()
Option, um dendate
Befehl auszuführen und die Ausgabe zurückzugeben%
Zeichen mit\
2>&1
am Ende für das Streaming sowohlstdout
undstderr
in diese ProtokolldateiBeispiel:
Ausgabe:
quelle