等待进程由bash开始结束并获得其PID

时间:2017-09-12 19:01:33

标签: linux bash

我有一个bash脚本,它使用until块启动java应用程序。它从java应用程序获取退出代码,如果它获得已知的关闭退出代码,则退出bash脚本,否则,它将重新启动java应用程序

$CMD=java -jar program.jar
until $CMD; do
  EXIT=$?
  if [ $EXIT == 2 ]
  then
       exit
  fi
  sleep 10
done

这很好用,但是我还有另一个应用程序需要知道这个过程的pid,到目前为止,我一直在使用pgrep,但是它的功能是什么?#39喜欢这个主意。他们希望我将PID写入pid文件。如何修改我的脚本以便将pid写入pid文件并在结束时将其删除?

谢谢。

1 个答案:

答案 0 :(得分:1)

一个天真但常见的实现可能如下所示:

java -jar program.jar & pid=$!
echo "$pid" >/path/to/file.pid
wait "$pid"

请注意& - 这会将您的程序置于后台。 除非你背景,否则没有活动的PID从脚本中的后续行收集,因为解释器在进入后续行之前等待程序退出。

但是根本不这样做。看看我对这个问题的评论。