在 shell 脚本中将后台进程带回到前台的干净方法

在 shell 脚本中将后台进程带回到前台的干净方法

举个例子:我有工作 shell 脚本,它启动 weblogic(将继续运行),然后进行部署

最后,我将后台进程带回到前台,这样 shell 脚本就不会退出(以代码 0 退出)

#!/bin/bash

set -m
startWebLogic.sh &

# create resources in weblogic
# deploy war
# ...

jobs -l
fg %1

我必须使用set -m, 来允许作业控制,但我也发现这不是在非交互式 shell 中使用它的最干净的方式。

有没有更好的方法来处理呢?

答案1

据我了解您正在寻找的问题wait

#!/bin/bash

startWebLogic.sh &

# create resources in weblogic
# deploy war
# ...

wait

它不会“将进程带到前台”。但它确实会等到 weblogic 返回。所以shell脚本直到weblogic退出后才会退出。这就是你用 实现的效果fg %1

help wait

等待由 ID(可以是进程 ID 或作业规范)标识的每个进程,并报告其终止状态。如果未给出 ID,则等待所有当前活动的子进程,并且返回状态为零。

相关内容