【问题标题】:How to schedule commands to run after multiple non-child processes finish?如何安排命令在多个非子进程完成后运行?
【发布时间】:2021-01-07 06:00:45
【问题描述】:

我有时会在我的服务器上启动长时间运行的任务,并希望服务器在这些任务完成后执行某些操作(通常是关闭)。如果只有一个任务,我可以简单地在运行任务的窗口中键入下一个命令,然后 bash 将在当前一个完成后运行它。但是,如果我要等待多个进程怎么办?

在我的工作流程中,不同的任务在 tmux 的不同窗格中运行,因此我不能直接使用 wait,因为我要等待的进程不是某个特定窗格中的子进程。

我在下面提供了一种可能的方法作为答案。

【问题讨论】:

    标签: bash process wait


    【解决方案1】:

    This questionanswer提供了相关的解决方案:

    tail --pid=$pid -f /dev/null
    

    但是,该特定答案只能处理等待一个进程,但我们可以使用等待多个进程来扩展它,然后在完成时运行我们自己的命令:

    tail --pid=$pid1 -f /dev/null &
    tail --pid=$pid2 -f /dev/null &
    tail --pid=$pid3 -f /dev/null &
    tail --pid=$pid4 -f /dev/null &
    wait; <your-command-here>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2014-10-26
      • 2020-08-08
      • 1970-01-01
      相关资源
      最近更新 更多