那是我的 python 脚本:
connection = cx_Oracle.connect(
'REPOR',
'REPOR',
'192.168.10.50:1521/db',
encoding='UTF-8'
)
cursor = connection.cursor()
try:
command = "df -h / /u01"
result = subprocess.check_output(command,
shell=True).decode(sys.stdout.encoding)
row = [('dm01dbadm01', result, datetime.now(), '0')]
cursor.bindarraysize = 1
cursor.executemany("insert into HISTORY values (:1, :2, :3, :4)", row)
connection.commit()
cursor.close()
print("Ok!")
except:
print("Oooops! Error!"
此脚本将此 df -h 命令的结果写入数据库。
在 linux 终端中完美运行
从终端,我使用以下命令执行脚本:
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1 scl enable python27 -- python2.7 /u01/app/Scripts/script.py
要从 crontab 运行,我执行了以下操作:
使用以下条目创建 bash 脚本:
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1 scl enable python27 -- python2.7 /u01/app/Scripts/script.py
cron 正在执行脚本后,显示 Oooops!错误!。 那么,为什么脚本也没有从 crontab 执行?
答案 0 :(得分:0)
不应该先导入 crx_Oracle 和 subprocess 模块吗?
另请参考“scl”工具的路径。
crontab 脚本无法获得登录 shell 获得的完整初始化。查看 crontab 文档以获取您的脚本必须在其中运行的运行时环境的准确描述。