crontab定時任務環境變數丟失問題

alei_1304發表於2013-12-25

      這兩天一直在忙於將一項任務全自動化,以便節省人工操作,由於伺服器是linux,用到了crontab命令,具體命令大致如下:
46 21 * * *  night_job.sh>>night_job.log 2>&1
      為了便於跟進查詢執行狀態和日誌,將任務的輸出重定向到night_job.log日誌中,由於在night_job.sh中包含了
數量眾多的sqlldr:sqlloader匯入命令和sqlplus命令,開始測試時並未得到預期的結果,通過日誌觀察到
       line 136: sqlldr: command not found
       line 1: sqlplus: command not found
      而當前使用者的PATH環境變數中已經包含了$ORACLE_HOME/bin,按理說應該讀取到,推測是可能是crontab命令並沒有初始化當前使用者下的環境變數導致。
綜合了網上的其他文章,通過如下幾種方式解決:
       1、將.bash_profile中的設定拷貝到crontab執行的指令碼中
       2 、在crontab執行的shell指令碼先執行./bash_profile
       3、source dir/.bash_profile
       以上三種處理方式中
      1最繁瑣,如果使用者下增加環境變數設定,可能仍然需要修改該指令碼
      2相對簡單些,但是./執行要切換到使用者根目錄執行,在執行其他指令碼之前要確保路徑是否正確
      3最簡單,直接載入環境變數即可
      按照3中的方式在其他任務執行之前加入該命令,任務執行成功。問題解決。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7483882/viewspace-1064438/,如需轉載,請註明出處,否則將追究法律責任。

相關文章