В конфигурации upstart как определить, какую команду следует использовать для выключения сервера. Допустим, у меня есть демон, который имеет два отдельных процесса.
Предположим, у меня есть файл upstart, который выглядит как этот.
description "Some Example Service"
author "Me"
start on runlevel [2345]
stop on runlevel [016]
respawn
exec startup.sh
Как мне сказать upstart, что он должен вызвать shutdown.sh
при выключении сервера? Как обычно upstart ожидает выключения демона?
Использование exec
для запуска процесса вполне нормально, но при его остановке, если вам абсолютно необходимо запустить определенный сценарий или набор команд, вы можете использовать раздел pre-stop
.
pre-stop exec shutdown.sh
Я предполагаю, что вы пытались использовать только exec stanza, и это не сработало, возможно, потому что ваш демон требует некоторой специальной очистки. Обратите внимание, что хорошо работающие демоны должны получать сигнал от upstart, когда работа остановлена, и если они обрабатывают сигнал соответствующим образом, дополнительная очистка не требуется.
Остановка задания включает в себя отправку SIGTERM на него. Если есть что-то, что нужно сделать до SIGTERM, сделайте это здесь. Можно утверждать, что сервисы должны обрабатывать SIGTERM очень изящно, поэтому в этом нет необходимости.
если есть что-то критическое, например, сброс на диск, и повышение тайм-аута не является опцией, предстоп - неплохое место для этого
blockquote>Также читайте этот раздел для всего рабочего процесса, что происходит, когда вы останавливаете работу. Обратите внимание, когда запускается предварительная остановка, и как впоследствии посылается сигнал процессу, как обычно выскочка справляется с остановкой заданий.
Мой источник - официальная кулинарная книга Upstart по адресу: http://upstart.ubuntu.com/cookbook/
.