2010-08-09 3 views
6

Les travaux suivants fins de ligne de commandeerreur Cron avec l'aide backquotes

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

mais lorsque je tente de le faire dans Cron, je reçois l'erreur:

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

J'ai vu quelqu'un d'autre sur la net résoudre le même problème en échappant aux signes de pourcentage, mais cela n'a pas aidé et je l'ai essayé avec juste la date à l'intérieur des citations arrière sans spécificateur de format et toujours eu les erreurs.

J'ai également vu l'argument de la date entre guillemets simples ou doubles, mais cela n'aide pas non plus. Accordé Je pourrais juste le jeter dans un manuscrit et exécuter que je suppose - mais quel amusement est-ce?

Des idées? J'utilise RHEL 5.

+0

lire 'man crontab' pour voir ce qu'il faut faire avec les symboles de pourcentage. –

Répondre

14

Essayez avec $() au lieu de guillemets obliques. Et vous avez probablement besoin d'échapper les signes de pourcentage puisque cron les convertit en saut de ligne autrement.

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

En outre, vous devriez store the password in an option file avec des autorisations sécurisées (par exemple. 600 ou 640) au lieu de passer sur la ligne de commande.

+0

Merci! C'est juste ce que je cherchais. Et merci pour l'astuce sur le fichier d'option aussi bien. – amac44

4

Mettez votre un script de ligne (comme indiqué) dans un fichier de script approprié et invoquer que de 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