2013-02-08 16 views
3

我試圖執行以下命令系列,以創建MySQL數據庫的備份。克龍說,「在crontab文件錯誤,無法安裝」

當我嘗試將命令添加到我的crontab使用crontab -e我得到錯誤「的錯誤在crontab文件,無法安裝」,並問我,如果我想要重試。

mkdir /home/mysql-backup/`date '+%m-%d-%Y'`; mysql -s -r -e 'show databases' | while read db; do mysqldump $db -r /home/mysql-backup/`date '+%m-%d-%Y'`/${db}.sql; done; rm -r -f `date --date="1 week ago" +%m-%d-%Y`; du -k |sort -n > output; mail -s "MySQL Backups" "[email protected]" < output 

有什麼我應該在此文件中的變化?或者我應該考慮創建一個腳本文件並從cron調用它。

預先感謝您可以提供任何幫助。

+1

肯定會將其分解爲腳本,您沒有任何錯誤檢查或處理。它現在可以工作,但是當它死亡時,你可能想知道它爲什麼會死亡。 – Anew

+0

您是否指定應該多久進行一次?即'1 2 * * * command args'? –

回答

0

是;作爲一種風格,如果沒有別的,我鼓勵將SQL命令放入shell腳本中,然後從cron運行shell腳本。 (而且,正如Anew指出的那樣,如果命令序列分成多行並帶有註釋,則該命令序列更容易維護/調試。)但是 - 是否將所有內容輸入crontab?查看man crontab並添加指定您希望命令運行的字段。

4

如果你給該腳本來當然會不同意的crontab -e。 crontab文件中的行應以5個字段開頭,指示您希望腳本何時運行,如can be read in crontab's manpage。另一方面,現在大多數Linux發行版都有預設的功能,應該每小時執行一次(/etc/cron.hourly),每天(/etc/cron.daily)等等。這對於更容易只需將腳本放在適當目錄中的文件中,它將在選定時間範圍內執行。另外一個好處是在這些文件中你不會被迫將所有東西塞進一行。

0

crontab(5)手冊頁看,百分號(%)具有特殊含義,因此可能會遇到麻煩。

是的,你應該把你的命令到一個單獨的shell腳本並調用從crontab的線。這也將使讀取crontab文件變得更加容易,並且可以很好地格式化腳本,以便更容易維護。你可以用這種方式從crontab中單獨測試它。

相關問題