Polecenie z symbolami procentowymi nie działającymi w crontab

11

Następujący crontab nie działa:

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

Próbowałem też zacząć od:

SHELL=/bin/bash

Aktualizacja: Myślałem, że postacie wsteczne `były złoczyńcami, ale ponieważ odpowiedź poniżej wyjaśnia, procent% był winowajcą!

lpanebr
źródło
Twoja linia testowa będzie działać tylko raz na godzinę. To może nie być to, co zamierzałeś przetestować.
user535733
nie jest pierwsza minuta? # mh dom mon dow polecenie
lpanebr
Masz rację .. Zmieniłem na * / 1, aby działał co minutę. Cron działa dobrze. Coś jest w poleceniach. Wygląda na to, że/bin/date +%Y-%m-%d
lpanebr

Odpowiedzi:

13

W /bin/date +%Y-%m-%d, musisz uciec każdemu %z \zgodnie z tą stroną podręcznika :

„Szóste” pole (reszta wiersza) określa polecenie do uruchomienia. Cała część polecenia wiersza, aż do znaku nowej linii lub%, zostanie wykonana przez / bin / sh lub przez powłokę określoną w zmiennej SHELL pliku cron. Znaki procentu (%) w poleceniu, chyba że poprzedzone klawiszem ukośnika (), zostaną zamienione na znaki nowej linii, a wszystkie dane po pierwszym% zostaną wysłane do polecenia jako standardowe wejście.

DK Bose
źródło
2
dzięki! Przeredaguję pytanie, aby pasowało do prawdziwego problemu.
lpanebr