2012-08-24 63 views
0

我已經建立了使用crontab -e一個cronjob如下:crontab的不運行mysql命令

12 22 * * * /usr/bin/mysql >> < FILE PATH > 

這不運行mysql命令。它只會創建一個空白文件。 雖然mysqldump命令正在通過cron運行。 問題是什麼?

+0

題外話;屬於[sf]或可能[su] –

+0

我不那麼確定,Jim。按照常見問題,cron和MySQL都是「程序員常用的軟件工具」。數據庫_users_不會與cron作業混淆,通常只有開發人員這樣做。 – paxdiablo

回答

2

當然mysql是MySQL的交互式界面。

假設你只是運行mysql>>,它試圖從標準輸入讀取第一次追加輸出到您的文件,它可能會得到一個最終的文件並退出。

也許你可能要考慮如何向它來處理一個命令,是這樣的:

12 22 * * * /usr/bin/mysql 
       -u me 
       -p never_you_mind 
       -e "select * from my_table" 
       -D my_database 
       >>/home/me/output_file 

(跨多行的可讀性分裂,而應是在同一行)。

另外,這不是太安全,因爲在進程運行時,您的密碼可能從ps可見。由於這只是一個例子,我並不擔心,但如果沿着這條路走下去的話,您應該考慮將密碼存儲在安全的my.cnf文件中。

就運行shell命令而言,從cron開始執行MySQL命令,這應該也可以。一個選擇是與這裏-DOC:

/usr/bin/mysql -u me -p never_you_mind -D my_database <<EOF 
    select * from my_table 
    select * from my_other_table where id = 74 
EOF 
+0

那麼是不是可以通過cron運行mysql命令?實際上,我將在shell腳本中運行mysql命令,該命令將通過cron運行。 – user1180463

+0

不,這是可能的,我已經更新了答案以顯示(從內存)。不可能的是從'cron'這樣做_interactively_。 – paxdiablo

0
12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1 

。重定向錯誤信息到同一個文件,這樣就可以進行調試。

也有關於如何調試cron作業的好articleHow to debug a broken cron job