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

Я пытаюсь найти способ получить одно задание, которое запускается, когда другая работа останавливается, и не допустить, чтобы эта другая работа действительно прекратилась.

По сути, у меня есть служба, которая работает, позволяет притворяться apache, и я хочу создать еще одно задание upstart, которое будет препятствовать закрытию этой службы, если не будут выполнены определенные условия. Поэтому я создал задание «задача», чтобы выполнить несколько проверок, и затем, если эти проверки не пройдут, Apache не должен закрываться.

Я думал, что мог бы сделать что-то вроде следующего:

start on stopping apache

task
script
if some_condition; then
    start --no-wait apache
fi
end script

Но другой сервис по-прежнему отключается, он просто немедленно запускается обратно. Я не могу этого иметь, он вообще не должен закрываться.

Я поместил оператор sleep в приведенный выше скрипт, и он задерживает остановку службы. Поэтому, если служба все еще работает, я думаю, что я смогу предотвратить ее отключение.

0
задан 21 February 2014 в 08:03

1 ответ

Таким образом, после копания в исходном коде upstart единственный раз, когда скрипт upstart может прервать операцию, находится в фазе «pre» (pre-start / pre-stop). Когда вы используете триггер, такой как start on stopping foo, сервис получает событие после фазы pre-stop для 'foo', поэтому вы не можете запустить его обратно без его остановки.

Однако при наличии условия start on stopping foo служба 'foo' не остановится, пока служба, прослушивающая событие, не завершится. Так что я в конечном итоге просто зацикливаюсь до тех пор, пока условие, которое я проверяю, не будет выполнено. Это не самое лучшее решение, но оно работает.


Альтернативным решением также было бы создать файл .override для службы и поместить скрипт pre-stop в переопределение. Затем условие может быть проверено в pre-stop, и выдача start не даст службе остановиться.

К сожалению, это не совсем работает для меня из-за других сложных причин, но это может быть вариант для тех, кто пытается это сделать.

0
ответ дан 21 February 2014 в 08:03

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

Похожие вопросы: