我有一个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文件并在结束时将其删除?
谢谢。
答案 0 :(得分:1)
一个天真但常见的实现可能如下所示:
java -jar program.jar & pid=$!
echo "$pid" >/path/to/file.pid
wait "$pid"
请注意&
- 这会将您的程序置于后台。 除非你背景,否则没有活动的PID从脚本中的后续行收集,因为解释器在进入后续行之前等待程序退出。
但是根本不这样做。看看我对这个问题的评论。