2014-02-24 79 views
0

我有一個python腳本,在運行時備份sql數據庫。焦油不能從cronjob工作

它工作完美時,我手動破壞它,但是當它不運行tar和rm命令!

備份之前我運行mysqldump命令的課程,然後我運行這個。這是在的cronjob與備份

os.system('tar -cvzf Backup_' + formt + '.tar.gz ' + 'sql_Backup_' + formt + '.sql') 
os.system('rm ' + 'sql_Backup_' + formt + '.sql') 

交易的腳本的一部分,我有

# Python SQL Backup Script 
00 23 * * 07 sudo /usr/bin/python /home/user/scripts/SQLbackup.py 

當我從shell本身運行這個運行良好 sudo的蟒蛇/家庭/用戶/ scripts/SQLbackup.py

但cronjob沒有。它只運行腳本並創建sql文件並且它就是這樣。它不壓縮它,它也不會壓縮後刪除SQL文件。

我已將此添加到sudoers文件

root ALL=(ALL) NOPASSWD:/bin/tar 
sudo ALL=(ALL) NOPASSWD:/bin/tar 

,仍然一無所獲。我把根和sudo都是100%確定的。

請記住:它手動運行完美,但不能完全從crontab運行。

+0

結果電子郵件說? –

+0

什麼結果電子郵件? @ IgnacioVazquez-Abrams – user3204203

+0

crond爲每個通過stdout或stderr生成輸出的cron作業發送的。 –

回答

0

問題可能是因爲腳本從crontab運行而導致腳本找不到指定的二進制文件時,$PATH未正確設置。

還要檢查腳本是否在正確的目錄中執行。

修改腳本以包括完整路徑tarrm和測試,如果它工作得更好:

os.chdir('/path/to/where/sqlfile/resides') 
os.system('/usr/bin/tar -cvzf Backup_' + formt + '.tar.gz ' + 'sql_Backup_' + formt + '.sql') 
os.system('/bin/rm ' + 'sql_Backup_' + formt + '.sql') 

注意tar通常安裝在/usr/bin但可以在不同的UNIX系統之間的差異。

+0

嘗試了它,它不工作 – user3204203

+0

好的,你可以通過在終端中運行「which tar」並在腳本中設置該路徑來檢查「tar」的路徑嗎? – HAL

+0

路徑是/ bin/tar – user3204203