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ą!


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.


2
dzięki! Przeredaguję pytanie, aby pasowało do prawdziwego problemu.
lpanebr
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.