2010-08-09 7 views
6

Folgende funktionieren gut von der KommandozeileCron Fehler bei der Verwendung von einfachen Anführungszeichen

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

aber wenn ich versuche, dass in cron zu tun, ich den Fehler:

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

ich jemand anderes auf der Säge net das gleiche Problem zu lösen, indem die Prozentzeichen entkommen, aber das hat nicht geholfen und ich versuchte es mit nur Datum innerhalb Backquotes ohne Formatbezeichner und immer noch die Fehler.

Ich habe auch Datum in einfachen oder doppelten Anführungszeichen eingeschlossen, aber das hilft auch nicht.

Zugegeben, ich könnte es einfach in ein Skript werfen und ausführen, nehme ich an - aber was für ein Spaß ist das?

Irgendwelche Ideen? Ich bin mit RHEL 5.

+0

lesen Sie 'man crontab', um zu sehen, was mit Prozentzeichen zu tun ist. –

Antwort

14

Versuchen Sie es mit $() statt Backticks. Wahrscheinlich müssen Sie den Prozentzeichen entgehen, da sie sonst in Zeilenumbrüche umgewandelt werden, da cron sie in Zeilenumbrüche umwandelt.

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

Auch Sie soll store the password in an option file mit sicheren Berechtigungen (z. B. 600 oder 640), anstatt es auf der Kommandozeile übergeben.

+0

Danke! Genau danach habe ich gesucht. Und danke für den Tipp über die Optionsdatei. – amac44

4

Setzen Sie Ihre eine Zeile Skript in eine richtige Datei Skript (wie dargestellt), und rufen Sie das von cron:

$ 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 
Verwandte Themen