我使用命令在Amazon EC2 Ubuntu实例上从另一个Python脚本中启动一个Python脚本:
os.system(call)
其中call
的格式为
"./script2.py arg1 arg2 arg3"
我注意到script2.py
不时以某种方式过早终止。我有一些日志记录,但它们没有显示正在发生的事情。所以我的问题是:
system()
返回某种退出状态。区分正常和异常终止的最佳测试是什么?也就是说,如果存在某种异常终止,我只想在调用脚本中生成一条日志消息。答案 0 :(得分:2)
假设您的子脚本没有使用标准输出,并且在崩溃时返回非零(这应该是python
可执行文件的默认值):
import subprocess as sp
try:
sp.check_output(['python', 'child.py'], stderr=sp.STDOUT)
except sp.CalledProcessError as err:
print 'Child terminated abnormally with error %d, log:' % err.returncode
print err.output
答案 1 :(得分:0)
1> os.system返回系统代码,如果它返回0进程运行并成功终止但是如果它返回任何数字,那么通常它意味着错误但是它取决于程序如何响应错误我的意思是如果progam在成功os上返回1。系统将返回1
例如
d = os.system('ls')
print d
d = os.system(your process)
print d
2 - ; python提供了syslog模块,你可以试试它
>>>import syslog
>>>help(syslog)
syslog是os本身提供的内置unix api