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

Bash 如何安排命令在多个非子进程完成后运行?,bash,process,wait,Bash,Process,Wait,有时,我会在服务器上启动长时间运行的任务,并希望服务器在这些任务完成后执行某些操作(通常是关闭)。如果只有一个任务,我可以简单地在运行该任务的窗口中键入下一个命令,然后bash将在当前任务完成后运行它。但是,如果有多个进程我想等待呢 在我的工作流中,不同的任务在tmux的不同窗格中运行,因此我不能直接使用wait,因为我要等待的进程不是某个特定窗格中的子进程 我在下面列出了一个可能的方法作为答案。提供了一个相关的解决方案: tail --pid=$pid -f /dev/null 但是,该特定

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

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

我在下面列出了一个可能的方法作为答案。

提供了一个相关的解决方案:

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>
tail--pid=$pid1-f/dev/null&
tail--pid=$pid2-f/dev/null&
tail--pid=$pid3-f/dev/null&
tail--pid=$pid4-f/dev/null&
等待