Befehl mit Prozentzeichen, die nicht in crontab ausgeführt werden

11

Die folgende Crontab funktioniert nicht:

# TEST LINE DOES DOT RUN
*/1 * * * * /bin/echo 'test '`/bin/date +%Y-%m-%d` >> /tmp/test

Ich habe auch versucht, damit zu beginnen:

SHELL=/bin/bash

Update: Ich dachte, die Backtick-Charaktere wären die Bösewichte, aber wie die Antwort unten verdeutlicht, war der Prozentsatz in% der Schuldige!

lpanebr
quelle
Ihre Testlinie wird nur einmal pro Stunde ausgeführt. Dies ist möglicherweise nicht das, was Sie zum Testen vorgesehen haben.
user535733
ist nicht der erste die Minute? # mh dom mon dow Befehl
lpanebr
Sie haben Recht. Ich habe auf * / 1 geändert, damit es jede Minute ausgeführt wird. Der Cron läuft einwandfrei. Da ist etwas mit den Befehlen. Es scheint der/bin/date +%Y-%m-%d
lpanebr

Antworten:

13

In /bin/date +%Y-%m-%dmüssen Sie jeweils %mit \entsprechend dieser Manpage entkommen :

Das "sechste" Feld (der Rest der Zeile) gibt den auszuführenden Befehl an. Der gesamte Befehlsteil der Zeile bis zu einer neuen Zeile oder einem% -Zeichen wird von / bin / sh oder von der in der SHELL-Variablen der Cronfile angegebenen Shell ausgeführt. Prozentzeichen (%) im Befehl werden, sofern sie nicht mit Backslash () gekennzeichnet sind, in Zeilenumbruchzeichen geändert, und alle Daten nach dem ersten% werden als Standardeingabe an den Befehl gesendet.

DK Bose
quelle
2
Vielen Dank! Ich werde die Frage so bearbeiten, dass sie zum eigentlichen Problem passt.
lpanebr