2011-08-27 8 views
6

mogę użyć tego poleceniazapasowa wykorzystanie bazy danych crontab z funkcją date

mysqldump -u"root" myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz 

ale po uruchomieniu w crontab

* * * * * mysqldump -u"root" myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz 

(ten błąd przyczyną według daty funkcji, kiedy ją usunąć, crontab uruchomić dobry)

na ubuntu, zdarza się ten błąd w pliku dziennika.

ubuntu CRON[xxxx] (user) CMD(mysqldump -u"root" myDB| gzip > mydb_`date+) 
ubuntu CRON[xxxx] (CRON) error (grandchild #5353 failed with exit status 2) 
ubuntu CRON[xxxx] (CRON) info (no MTA installed, discarding output) 
+1

Twój crontab nie jest tym samym poleceniem, które uruchamiasz z wiersza poleceń. Pominięto 'date +% d-% m-% Y' (zwracając uwagę na brak backtics), które sprawiają, że faktycznie działa, jak backtics wykonać i zwrócić wynik funkcji date .... – gview

+0

to jest to samo, ale nie mogę wypisać ze stackoverflow. – meotimdihia

+0

Tak, możesz. Użyj wycofania, aby sformatować część linii jako kod; wcięcie o 4 lub więcej spacji, aby sformatować jeden lub więcej wierszy jako kod. Wybierz zakres tekstu i kliknij ikonę '{}, aby zrobić to automatycznie. Możesz też uciec od odwrotnego ukośnika: '\' '. –

Odpowiedz

13

% znaki polecenia crontab są konwertowane do nowej linii, a wszystkie dane po pierwszym % zostaje wysłany do standardowego wejścia na komendy użytkownika. Wymień każdy % na \%.

(I miał tylko 4 pola Czas: * * * *; trzeba 5 (później stała się pytanie)).

+0

poprawione pytanie to * * * * * – meotimdihia

+0

działa teraz, dziękuję – meotimdihia

0

Z man 5 crontab:

The `` szósty 'pole' (the reszta linii) określa komendę, która ma być uruchomiona na .

Cała część polecenia linii, aż do znaku nowej linii lub% , zostanie wykonana przez/bin/sh lub przez powłokę określoną jako w zmiennej SHELL pliku crontab.

Procenty (%) w komendzie w , chyba że uciekł z backslash() zostanie zmieniona na znaków nowej linii, a wszystkie dane za pierwszym% zostaną wysłane do komendy jako standardowego wejścia. Nie ma sposobu na rozdzielenie pojedynczej linii poleceń na wiele linii, takich jak "\" w powłoce.

Powiązane problemy