【发布时间】:2014-02-06 10:23:38
【问题描述】:
我刚刚在 python 中创建了一个软件,它应该从 shell 调度几个命令。 (ps:我在linux上工作) 顺便说一句,我创建了以下函数来启动进程:
def exec_command(cmd):
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid)
pid = process.pid
print '----------launched process with PID: ', pid
return pid
在此之后,我使用 pid 检查进程是否进入僵尸状态,在这种情况下将其杀死。
有时一切正常,但在某些情况下,启动的进程没有做任何事情。
我说的过程是:sh /home/ubuntu/programs/data-integration/kitchen.sh -file=/home/ubuntu/TrasformazioneAVM/JobAVM.kjb -level=Basic -param:processName=avm
如果我通过 shell 启动它,一切正常,但如果我用我的函数执行它,我可以在系统监视器上看到进程(或通过 shell 使用“top”命令)但没有任何结果(我检查内存使用情况和 cpu 使用情况通常非常高,但在这种情况下不是)。
任何机构有什么想法吗?
【问题讨论】:
-
你能写出print cmd的输出吗
-
“打印 CMD”是什么意思?
-
我的意思是你把 cmd 作为一个列表还是一个字符串
-
这是字符串:sh /home/ubuntu/programs/data-integration/kitchen.sh -file=/home/ubuntu/TrasformazioneAVM/JobAVM.kjb -level=Basic -param:processName= avm
标签: python linux subprocess popen