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
,