我正在通过Python commands.getstatusoutput()
函数调用执行informix ontape命令进行备份。
示例:
(rc, op) = commands.getstatusoutput("ontape -v -s -L 1|compress -c >/home/compressed/level_1_archive")
执行上述功能后,返回码rc为0
输出消息op是"Archive failed - ISAM error: An error has occurred during archive back up."
我不明白为什么即使命令失败,Python也会返回0
使用的Python版本是2.6.6
答案 0 :(得分:0)
问题不在于Python方面。 ontape命令的输出通过管道输出到gzip命令。返回shell的退出代码是gzip命令的返回码。 Gzip命令没有错误输出,即使它没有从ontape命令接收数据并返回零作为退出代码。
该问题的几种可能解决方案是:
不要将ontape的输出传输到gzip;而是使用这样的东西:
"(rc, op) = commands.getstatusoutput("source /source ; ontape -v -s -L 0 -t STDIO | /bin/gzip ; exit ${PIPESTATUS[0]} > /backup/ontape_backup.gz")"