Назад | Перейти на главную страницу

ubuntu выскочка никогда не убивает мой процесс

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