是否可以使用 bash 将一个进程从另一个后台进程放入后台?
例如,如果我们有以下代码:
function check_if_server_running {
while [ server_running -ne true ]
curl localhost:8000
done
bg %-
}
check_if_server_running &
./startServer
# Some other code...
我们可以用一些东西替换 bg %- 以使 ./startServer 一旦启动就在后台运行吗?通常 bg %- 将最后一个进程放在后台,但它对我不起作用
答案1
不,这种方式实际上行不通,因为bg
和fg
命令仅在交互的shell 的模式,当您已经在后台运行函数或子 shell 时,绝对不是这种情况......
(此外,bg
它本身不会将已经在后台的作业放入后台,它只是在后台恢复已停止的作业,您需要先使用Ctrl+停止作业Z。)
考虑重新编写代码以在后台启动服务器,然后等到它在前台运行:
function wait_for_server_running {
while ! server_running; do
curl localhost:8000
done
}
./startServer &
wait_for_server_running
# Some other code...
这看起来与您想要实现的目标相似,对吧?