如何在多个非子进程完成后将命令安排到 运行?

How to schedule commands to run after multiple non-child processes finish?

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

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

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

This question's answer提供了相关解决方案:

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>