从Ubuntu上的另一个脚本启动python脚本进程:如何跟踪状态?

时间:2012-12-11 15:01:54

标签: python system termination

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

os.system(call) 

其中call的格式为

"./script2.py arg1 arg2 arg3"

我注意到script2.py不时以某种方式过早终止。我有一些日志记录,但它们没有显示正在发生的事情。所以我的问题是:

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

2 个答案:

答案 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

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