У меня есть простой сценарий удара:
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
.