【问题标题】:Open two own terminals, which run two scripts and wait for them to finish打开两个自己的终端,运行两个脚本并等待它们完成
【发布时间】: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 scrip1python script2 .. 他们需要几天甚至几周的时间 - 拥有自己的终端可以让我监控进度和错误。
  • 所以让他们去自己的日志文件。如果脚本是直接可执行的(shebang 行和执行位设置),那么终端可以直接运行它们。我只是将它们从一个脚本记录到自己的文件中,然后手动在两个窗口中跟踪日志。
  • 好吧.. 如果我让他们只记录到一个文件,我将如何同时运行同时等待?并将日志文件限制为指定的大小/行数?
  • 如果你让它们在两个终端中运行,你需要这样做。您在后台运行它们并使用内置的 wait 让 shell 等待后台进程结束。

标签: python linux bash subprocess


【解决方案1】:

要运行命令并等待它们完成,请在后台运行它们,然后使用 shell wait 内置告诉 shell 等待后台作业完成。

job1 &
job2 &

wait

如需控制日志文件的大小,请参阅 this questionmy answer,了解如何处理正常和不正常的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多