У меня есть новомодный сервис, который поддерживает много экземпляров рабочих.
pm-all-workers.conf:
start on runlevel [2345]
stop on runlevel [!2345]
env NUM_WORKERS=25
pre-start script
for i in `seq 1 $NUM_WORKERS`
do
start pm-worker N=$i
done
end script
пополудни-worker.conf:
start on runlevel [2345]
stop on stopping pm-all-workers
instance $N
respawn
respawn limit 10 5
umask 022
exec su - someuser -c "/home/someuser/bin/worker.bin"
Это хорошо работало, но недавно некоторые рабочие процессы продолжают бродить вокруг, даже если сервис останавливается. Мое понимание является выскочкой, отправит SIGTERM в процессы на остановке и затем после нескольких секунд SIGKILL, если процесс будет все еще.
Как возможно, что некоторые процессы не становятся уничтоженными? Я могу уничтожить процессы, прекрасные вручную с pkill -9 worker.bin
.
Возможно, Upstart отправляет su сообщение SIGTERM / KILL вместо вашего worker.bin. Попробуйте использовать раздел setuid для выскочки и удалите бит su.