【问题标题】:unix - how to use wait for multiple background processesunix - 如何使用等待多个后台进程
【发布时间】:2013-08-13 15:08:53
【问题描述】:

我正在使用 korn shell。这是使用等待的可能情况吗?我在哪里有 (2) 个实例?

#!/usr/bin/ksh
a &
wait
b &
c &
wait
d

我的目标是先运行 a,一旦完成,然后同时启动 b,c。一旦 b,c 完成,然后运行“d”。

【问题讨论】:

    标签: unix scripting ksh


    【解决方案1】:

    我不确定我是否完全理解您的情况的语义。
    在我看来,您面临的问题围绕着等待 both b 和 c。

    以下是解决此问题的方法(可能)
    首先,您等待 a..等待返回的那一刻,您触发 b 和 c。您可以使用两种等待 - 一种用于 b,另一种用于 c..这些顺序无关紧要,因为您无论如何都想同时等待。
    一旦两个等待都返回,您就可以触发 d。

    • 开火
    • 等一下
    • 火b,c
      • 火b
      • 火c
    • 等待 b,c
      • 等一下
      • 等一下
    • 火d

    【讨论】:

    • 这取决于您是否希望 A 在后台运行..这完全取决于您。至于 B 和 C,由于您希望它们并行运行,因此您必须在后台运行它们。在这种情况下,等待的顺序并不重要,因为您希望在执行下一条语句之前都完成
    • 在继续触发 d 之前是否有其他方法可以检查 b、c 是否完成?
    • 您的意思是同时检查吗?我不这么认为..查看stackoverflow.com/a/356154/1761555 了解更多详情
    • 你可以获取 b 和 c 的 PID 并检查它们是否已经退出(或仍在运行)
    • 如果它对您有用,您能否将其标记为正确?其他人可能会发现它也很有用。
    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2023-03-25
    相关资源
    最近更新 更多