我们正在努力使OS信号(TERM
,KILL
等)到达Apache服务器,该服务器是使用shell脚本启动的。以下是我们要做的事情: -
1)我们有一个docker文件,结尾于:
CMD ["sh","-c","/apps/scripts/run.sh" ]
这个想法是启动apache并将docker容器放在它上面。
2)然后我们有一个shell脚本run.sh
: -
_term() {
echo "Caught signal!"
apachectl -k graceful-stop
}
trap _term SIGINT SIGTERM SIGWINCH
apachectl start &
PID=$!
echo "APACHE PID is ${PID}"
wait $PID
trap - SIGINT SIGTERM SIGWINCH
wait $PID
EXIT_STATUS=$?
echo "Exiting with Exit Status of ${EXIT_STATUS}"
我们的想法是等待Apache服务器并在收到SIGTERM
/ SIGINT
/ SIGWINCH
后正常杀死它。
我们面临的问题是: -
1)运行docker容器后,它会执行脚本,它会抛出以下错误并退出:
等待:pid 102不是这个shell的孩子
似乎shell脚本没有将apachectl start &
视为子进程。
我们如何确保shell脚本将信号发送到apache?
如果有任何帮助,将非常感谢!