0

我使用以下命令在 Amazon EC2 Ubuntu 实例上从另一个 Python 脚本中启动一个 Python 脚本:

os.system(call) 

call表格在哪里

"./script2.py arg1 arg2 arg3"

我注意到有时会以script2.py某种方式过早终止。我有一些日志记录语句,但它们没有显示发生了什么。所以我的问题是:

  1. 我读到system()返回某种退出状态。区分正常终止和异常终止的最佳测试是什么?也就是说,如果有某种异常终止,我只想在调用脚本中生成一条日志消息。
  2. 是否有任何类型的系统日志可以让我尝试找到终止进程的痕迹?
4

2 回答 2

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
于 2012-12-11T15:46:23.843 回答
0

1> os.system 如果返回 0 进程运行并成功终止,则返回系统代码,但如果它返回任何数字,则通常表示错误,但它取决于 progam 如何响应错误我的意思是如果 progam 在成功时返回 1 os.system 将返回 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

http://docs.python.org/2/library/syslog.html

于 2012-12-11T15:10:53.717 回答