【发布时间】:2016-08-12 22:44:15
【问题描述】:
我正在从名为start.sh 的 Bash 脚本启动 Java 代码。 Bash 脚本启动 Java 代码,然后 Java 代码运行。在 Java 程序结束时,我想向 Bash 脚本发送一个信号以终止。请记住,Bash 脚本以 PID = 1 运行。我必须终止 PID 1 进程。
我设置了 bash 脚本,使其在无限循环中运行,waits 用于终止信号:
#!/bin/bash
# Run the java code here..
# Listen for an exit command.
trap 'exit 0' SIGTERM
while true; do :; done
我正在使用 Docker 实例,信号为 sigterm。我正在关注本教程:https://www.ctl.io/developers/blog/post/gracefully-stopping-docker-containers/,它解释了如何从命令行发送 sigterm。我想自动化这个过程,并在 Java 程序结束后立即从内部关闭/终止 docker 实例。
如何将信号发送回最初启动 Java 代码的 bash 脚本?
我应该跟随吗 this method 将信号作为参数发送到 bash 脚本?或者它会启动另一个具有不同 PID(不是 1)的 bash 脚本。
需要帮助!
【问题讨论】:
-
使用
kill -15 PID -
在哪里?在 bash 脚本中?
-
不抱歉,读错了,就像从 bash 发送到 java 一样。
-
问题是,我可以轻松地从外部终止(发送 sigterm)到 docker 实例。它会根据需要终止。我只想从 Java 发送它并使其自动化,这样我就不必编写任何 sigterm 命令并继续检查 Java 程序是否已完成
标签: java bash shell docker sigterm