2010-08-09 39 views
6

下工作的命令行精細克朗錯誤使用反引號

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

但是當我嘗試這樣做,在cron,我得到的錯誤:

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

我看到別人在net通過轉義百分號來解決同樣的問題,但是這並沒有幫助,我在沒有格式說明符的backquotes裏面用日期試了一下,仍然有錯誤。

我也看到過用單引號或雙引號括起來的日期參數,但這也沒有幫助。

當然,我可以把它放入一個腳本並執行,我想 - 但是有什麼樂趣呢?

任何想法?我使用RHEL 5

+0

閱讀'man crontab'來看看如何處理百分比符號。 – 2010-08-10 15:58:26

回答

14

$()而不是反引號試試吧。而你可能確實需要逃避百分號,因爲cron否則將它們轉換爲換行符。

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

此外,你應該store the password in an option file與安全的權限(如600或640),而不是通過它的命令行上。

+0

謝謝!這正是我正在尋找的。並感謝關於選項文件的提示。 – amac44 2010-08-11 15:57:51

4

把你的一個行腳本(如圖所示)到合適的腳本文件並調用該從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