Использование exec
для запуска процесса - это нормально, но при его остановке, если вам абсолютно необходимо запустить определенный скрипт или набор команд, вы можете использовать pre-stop
раздел.
pre-stop exec shutdown.sh
Я предполагаю, что вы пытались использовать только exec stanza, и это не сработало, возможно, потому что ваш демон требует некоторой специальной очистки. Обратите внимание, что демоны с хорошим поведением должны получать сигнал от upstart, когда работа остановлена, и если они обрабатывают сигнал соответствующим образом, дополнительная очистка не требуется.
Остановка работы подразумевает отправку SIGTERM на нее. Если есть что-то, что нужно сделать до SIGTERM, сделайте это здесь. Возможно, сервисы должны обрабатывать SIGTERM очень изящно, поэтому в этом нет необходимости.
если есть что-то критическое, например, сброс на диск и увеличение тайм-аута не вариант, предстоп - не плохое место для этого
Также прочитайте этот раздел для всего рабочего процесса, что происходит, когда вы останавливаете работу. Обратите внимание, когда выполняется предварительная остановка, и как впоследствии посылается сигнал процессу, как обычно выскочка обрабатывает остановки заданий.
Мой источник - официальная кулинарная книга Upstart по адресу: http://upstart.ubuntu.com/cookbook/.