2010-08-09 9 views
6

Poniższe działa poprawnie z wiersza poleceńbłąd Cron z wykorzystaniem małe cudzysłowy

/usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 

ale gdy próbuję to zrobić w cron, pojawia się błąd:

bad ` sign 
errors in crontab file, can't install 

widziałem kogoś na net rozwiązuje ten sam problem, uciekając przed znakami procentu, ale to nie pomogło, a ja wypróbowałem je z datą wewnątrz backquotes bez specyfikacji formatu i nadal mam błędy.

Widziałem także argument daty zawarty w pojedynczym lub podwójnym cudzysłowie, ale to też nie pomaga.

Przyznam, że mógłbym po prostu wrzucić to do scenariusza i wykonać, jak przypuszczam, ale co to za zabawa?

Wszelkie pomysły? Używam RHEL 5.

+0

przeczytać "man crontab', aby zobaczyć, co robić z symbolami procentu. –

Odpowiedz

14

Spróbuj z $() zamiast backticks. Prawdopodobnie musisz uciec od znaków procentowych, ponieważ cron zamienia je na znaki nowej linii.

* 0 * * * /usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.$(date +\%Y\%m\%d\%H\%M).sql 

Ponadto, należy store the password in an option file z bezpiecznych uprawnień (np. 600 lub 640), zamiast przekazywać je w wierszu poleceń.

+0

Dziękujemy! Tego właśnie szukałem. I dzięki za podpowiedź na temat pliku opcji. – amac44

4

Połóż jeden skrypt wiersza (jak pokazano) do właściwego pliku skryptu i wywołać które z crona:

$ cat /usr/local/bin/db-backup 
#!/bin/sh 
/usr/bin/mysqldump -uUser -pPass Db_name > \ 
    /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 
$ # use RHEL commands to add db-backup to your crontab