我正在从名为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脚本。
需要帮助!
答案 0 :(得分:0)
通过这种方式,docker在java代码运行结束后获得SIGTERM。
例如:
#!/usr/bin/env bash
set -e
someOtherCodeIfNeed
exec your_java_code_run