34 lines
666 B
Bash
Executable File
34 lines
666 B
Bash
Executable File
#!/usr/bin/env bash
|
|
APP=$1
|
|
set -x
|
|
|
|
# Signal helper
|
|
source /opt/scripts/signals.sh
|
|
|
|
PID=0
|
|
TERM_handler() {
|
|
SIGNAME="$1"
|
|
echo "Killing ${PID}"
|
|
echo "Signal ${SIGNAME}"
|
|
if [ ${PID} -ne 0 ]; then
|
|
ps -ef --forest
|
|
CHILDS=$(pgrep -P "${PID}")
|
|
kill -"${SIGNAME}" -"${PID}"
|
|
for i in $CHILDS; do
|
|
wait $i
|
|
done
|
|
fi
|
|
ps -ef --forest
|
|
ret=$(signal_return_val ${SIGNAME})
|
|
exit $ret
|
|
}
|
|
|
|
signals_trap_with_arg TERM_handler SIGTERM
|
|
${APP} &
|
|
PID=$$
|
|
|
|
# wait forever
|
|
signals_wait_forever
|
|
|
|
# https://docs.docker.com/compose/faq/
|
|
# https://medium.com/@gchudnov/trapping-signals-in-docker-containers-7a57fdda7d86 |