如何在后台等待?

如何在后台等待?

我有两个后台作业,作业 ID 为 1 和 2。我想在作业 1 完成后做一些事情,但我不想挂起。

目前我得到的是wait 1 && do whatever,但是这个命令它会自动阻止当前的 shell。我想让wait它自己运行后台。我wait 1 & && do whatever在 zsh 中尝试过,但不起作用。我收到一个错误zsh: parse error near '&&'

注意:我想要的是重要的在后台等待而不是等待一些后台作业完成

答案1

语法错误是因为&&&都是命令分隔符。&在后台启动命令并立即运行下一个命令,同时&&运行第一个命令,等待它完成,如果第一个命令成功则运行第二个命令。

要将您想要与第三个事物异步运行的两个事物作为背景,请使用以下模式:

( first_thing && second_thing ) &
third_thing

可选wait $! third_thing在继续之前完成前两个。

wait 1等待 PID 1 完成,这在 shell 运行时不太可能发生。你会想要的wait %1,等待着工作规范1.

答案2

我想wait不是答案。根据tail是一个更好的解决方案。我应该使用( tail --pid=WHATEVER -f /dev/null && do whatever ) &

相关内容