Ubuntu Upstart никогда не убивает мой процесс

У меня есть простой скрипт bash:

echo "Starting"
function sigint {
   echo "sigint"
}

function sigterm {
   echo "sigterm"
}

trap sigterm SIGTERM
trap sigint SIGINT

while true
do
  sleep 2
  echo "-"
done

Я запускаю этот скрипт с помощью upstart, используя этот файл конфигурации:

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

Когда я запускаю его с помощью upstart, я могу контролировать его вывод в /home/ubuntu/log.txt, Проблема в том, что, когда я прекращаю свою работу, я вижу, что sigterm отправляется в мою программу (она печатает его), я затем непосредственно вижу "готово" (что написано в сценарии после остановки), но я все еще вижу "-" печатается каждые 2 секунды...

Происходит то, что выскочка никогда не отправляет SIGKILL в мой сценарий, даже если он говорит, что остановка прошла успешно (так как он входит в сценарий после остановки).

Любая помощь будет отличной!

1 ответ

Решение

Скорее всего, он посылает SIGKILL в оболочку. Попробуйте добавить exec перед ./home/ubuntu/trapper.sh,

Другие вопросы по тегам