我已經建立了使用crontab -e
一個cronjob如下:crontab的不運行mysql命令
12 22 * * * /usr/bin/mysql >> < FILE PATH >
這不運行mysql命令。它只會創建一個空白文件。 雖然mysqldump命令正在通過cron運行。 問題是什麼?
我已經建立了使用crontab -e
一個cronjob如下:crontab的不運行mysql命令
12 22 * * * /usr/bin/mysql >> < FILE PATH >
這不運行mysql命令。它只會創建一個空白文件。 雖然mysqldump命令正在通過cron運行。 問題是什麼?
當然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
那麼是不是可以通過cron運行mysql命令?實際上,我將在shell腳本中運行mysql命令,該命令將通過cron運行。 – user1180463
不,這是可能的,我已經更新了答案以顯示(從內存)。不可能的是從'cron'這樣做_interactively_。 – paxdiablo
12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1
。重定向錯誤信息到同一個文件,這樣就可以進行調試。
也有關於如何調試cron作業的好article: How to debug a broken cron job
題外話;屬於[sf]或可能[su] –
我不那麼確定,Jim。按照常見問題,cron和MySQL都是「程序員常用的軟件工具」。數據庫_users_不會與cron作業混淆,通常只有開發人員這樣做。 – paxdiablo