【发布时间】:2014-11-20 15:06:17
【问题描述】:
我有一个脚本,其中提供了运行进程的选项。我说的不是一个可执行文件,而是两个 python 脚本,它们需要在自己的终端中运行并在终端中产生输出。
我考虑过script1 = subprocess.call(["/dir/python","/dir/script1","param"]),或者与/bin/bash 相同,但这似乎是在当前终端中运行python/bash - 而不是作为自己的窗口。
如果我选择script1 = subprocess.call(["/usr/bin/xterm","param to run bash and my script"]),则会打开一个新窗口,但随后会出现下面描述的问题。
我遇到的另一个概念问题是,我需要等待 both 脚本。因此,如果调用子进程可以工作,它会在第一个被调用时等待直到它完成,然后启动第二个,但它们需要同时运行。
如何启动两个新终端,每个终端启动一个指定的脚本?
【问题讨论】:
-
你告诉终端程序运行脚本而不是 bash 来运行脚本(或者你告诉终端运行 bash 来运行脚本)。但是请注意,除非脚本在最后等待输入,否则终端窗口将在脚本完成后立即退出并关闭。为什么这些脚本需要自己的终端?
-
是的,我需要让第一个脚本打开两个终端程序
xterm(或其他),它们运行bash,它再次运行python scrip1和python script2.. 他们需要几天甚至几周的时间 - 拥有自己的终端可以让我监控进度和错误。 -
所以让他们去自己的日志文件。如果脚本是直接可执行的(shebang 行和执行位设置),那么终端可以直接运行它们。我只是将它们从一个脚本记录到自己的文件中,然后手动在两个窗口中跟踪日志。
-
好吧.. 如果我让他们只记录到一个文件,我将如何同时运行和同时等待?并将日志文件限制为指定的大小/行数?
-
如果你让它们在两个终端中运行,你需要这样做。您在后台运行它们并使用内置的
wait让 shell 等待后台进程结束。
标签: python linux bash subprocess