cx_Oracle庫導入失敗引起crontab中python程序運行失敗,並且無錯誤提示

今天遇到一個問題:

       一個python腳本命令行運行時很正常,放到crontab中就無法工作,日誌也沒有記錄,找了半天,終於發現問題所在。

在腳本最上方,程序如下:

#!/usr/local/bin python  
# coding=utf8  
import cx_Oracle  
import sys  
import time  

注意,這裏

import cx_Oracle  

cx_Oracle需要依賴oracle的ORACLE_HOME環境。我發現ORACLE_HOME定義在/etc/profile下,在這裏修改的內容是對所有用戶起作用的,但是對crontab是不起作用的。以下是各個文件的一個作用域:

 

(1)/etc/profile: 此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。
(2)/etc/bashrc: 爲每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。
(3)~/.bash_profile: 每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。
(4)~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。
(5)~/.bash_logout: 當每次退出系統(退出bash shell)時,執行該文件. 另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承 /etc/profile中的變量,他們是"父子"關係。

(6)~/.bash_profile 是交互式、login 方式進入 bash 運行的~/.bashrc 是交互式 non-login 方式進入 bash 運行的通常二者設置大致相同,所以通常前者會調用後者。

解決辦法:

30 7 * * *  . /etc/profile; /usr/local/bin/python2.7 /data/storeDataToOracleDB.py  &  

這裏加上了

. /etc/profile;  

ok,問題解決。

文章轉自:https://www.cnblogs.com/chenjianhong/p/4144518.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章