前幾天寫了個定時備份Sybase數據庫的腳本,在shell中寫完後試著手動執行,一切都ok。結果寫到cron定時文件後,到了時間就怎麼也不執行。很納悶,又檢查了一通用戶、權限、目錄權限等(其實手動能執行說明這些都沒問題),都沒問題啊,怎麼回事呢?
後來看到一位前輩的樣例,才恍然大悟。原來自己在登錄shell時sybase的環境變量都在生效,但當cron調度備份腳本運行時產生的子shell中,就無法找到腳本執行所需要的Sybase環境變量了。所以,應當在cron中數據庫備份腳本前,執行使Sybase環境變量生效的腳本(加在備份腳本中或單獨執行都可以)。
suse Linux下:
source /home/Sybase/.bash_profile;
AIX下:
00 10 *** . /home/sybase/.profile;/home/Sybase/backupdb.sh
(注:與備份腳本間有空格)