在Python中的一个进程下运行shell脚本
问题描述:
我对shell脚本很陌生。 我必须使用Python执行shell脚本。 shell脚本的顺序很重要。 这是我的例子Python代码在Python中的一个进程下运行shell脚本
import subprocess
import os
script1= "scripts/script1.sh"
script2 = "scripts/script2.sh"
script3 = "scripts/script3.sh"
subprocess.call([script1])
subprocess.call([script2])
subprocess.call([script3])
问题是与上面的代码中所有的脚本单独执行一个接一个,但我想所有的下一个进程中运行。
例如,script2和script3应该在脚本运行时执行。
答
尽管OP显然拒绝澄清他的问题,但他留下了一条评论,表示他正在寻找subprocess.Popen()
。
procs = []
for cmd in ['scripts/script1.sh', 'scripts/script2.sh', 'scripts/script3.sh']:
procs.append(subprocess.Popen([cmd]))
您应该最终为您开始的流程wait
。
“一个进程下”是指“在另一个脚本运行时执行”?这些看起来完全矛盾。如果你想同时运行它们,你如何保持秩序? –
@丹尼尔罗斯曼是由“在一个进程下”我的意思是“脚本2和脚本3在脚本1运行时运行”。实际上,在我的实现中,script1打开一个调试程序的GUI,并且该程序正在等待一些由script2执行的命令。 – user3159610
你应该澄清你的问题。一个shell脚本总是一个独立的进程。通过在后台运行一些进程(这是一个交互式shell概念 - 基本上意思是fork,不用等),或者通过使用管道,您可以运行多个并发进程。 'subprocess.call()'等待一个进程完成,但是底层的'Popen'将会像你喜欢的那样启动尽可能多的进程而不用等待,除非你明确地要求它。 – tripleee