链接两个进程Bash

时间:2016-12-12 21:45:58

标签: bash

我有两个命令行程序,一个客户端应用程序和一个与之对话的服务器应用程序。

客户端依赖于后台运行的服务器。我可以通过以下方式启动:

java -jar server.jar & java -jar client.jar

然而,当我杀死客户端时,服务器仍然在后台。有没有办法将两者联系起来,这样如果客户端死了,服务器就会死掉?

2 个答案:

答案 0 :(得分:2)

使用$!在后​​台运行服务器作业并存储进程ID。然后运行客户端。 客户端退出后,使用存储的pid终止服务器,如下所示:

java  -jar server.jar &
server=$!
java -jar client.jar
kill $server

更短:无需存储后台进程的PID,只有一个

java  -jar server.jar &
java -jar client.jar
kill $!

答案 1 :(得分:1)

无法链接它们,但您可以明确地管理这些过程。

java -jar server.jar & server_pid=$!
java -jar client.jar
kill $server_pid

服务器在后台运行,然后客户端在前台运行。此时脚本会阻塞,因此当客户端退出时,脚本将继续执行下一个命令,该命令会终止服务器。