ちゃんと停止コマンドがあるやつはいいけど kill
で停止するやつとかはちゃんと停止を待ってあげる必要がある。
最近、docker-entrypoint.shでよく書いてるのでメモする。
#!/bin/bash
set -e
##
## なにがしかの処理
##
# &使ってバックグラウンドプロセスにしてる場合(実行の次の行に書く)
# nohup hogehoge &
# pid=$!
stop() {
echo " * Stopping"
# pidファイルを作ってた場合
# local pid=`cat xxx.pid`
kill $pid
local psalive=`kill -0 $pid > /dev/null 2>&1; echo $?`
while [ "$psalive" = "0" ]
do
sleep 1
psalive=`kill -0 $pid > /dev/null 2>&1; echo $?`
done
echo " ...done."
}
# SIGTERMで引っ掛けたい場合
# trap 'stop' TERM