У меня есть простой сценарий bash:
echo "Starting"
function sigint {
echo "sigint"
}
function sigterm {
echo "sigterm"
}
trap sigterm SIGTERM
trap sigint SIGINT
while true
do
sleep 2
echo "-"
done
Я запускаю этот сценарий с выскочкой, используя этот файл конфигурации:
description "start trapper"
kill timeout 1
script
./home/ubuntu/trapper.sh >> /home/ubuntu/log.txt
end script
post-stop script
echo "finished" >> /home/ubuntu/log.txt
end script
Когда я запускаю его с помощью выскочки, я могу отслеживать его вывод в /home/ubuntu/log.txt
. Проблема в том, что когда я останавливаю свою работу, я вижу, что в мою программу отправляется sigterm (она его печатает), затем я сразу вижу «готово» (которое записано в сценарии после остановки), но я все еще вижу «-» печатается каждые 2 секунды ...
Что происходит, так это то, что выскочка никогда не посылает SIGKILL моему сценарию, даже если он говорит, что остановка выполнена успешно (поскольку он входит в сценарий пост-остановки).
Любая помощь была бы замечательной!
Скорее всего, он отправляет SIGKILL в оболочку. Попробуйте добавить exec
перед ./home/ubuntu/trapper.sh
.