Запуск краткосрочных задач через выскочку

ОС: Ubuntu 12.04

Задача: запустить скрипт при определенных условиях запуска / остановки. Длительный сервис / демон не запускается, только краткосрочные действия.

Upstart скрипт test.conf:

description     "test script"

start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]

task

pre-start exec /full/path/to/script.sh start
pre-stop exec /full/path/to/script.sh stop

Проблемы:

  1. Запуск «теста запуска» никогда не заканчивается. Если у меня Ctrl-C повесил трубку, вызовы «status» показывают, что служба работает.
  2. «Стоп-тест» вообще не приводит к выполнению предстопного раздела.

Можно ли решить исходную задачу с помощью сценариев выскочки?

Спасибо.

Update. «тот факт, что ваш script.sh имеет как запуск, так и остановку действий, что предполагает длительный демон»

Нет противоречий. Есть действие при запуске и очистка без промежуточных процессов между ними.

Когда я добавляю раздел «exec», то есть

exec /full/path/to/script.sh idle

результат таков:

$ start test
test stop/waiting

$ status test
test stop/waiting

$ stop test
stop: Unknown instance:

Исправление : скрипт, упомянутый в строфах, выполняется с параметрами 'start' и 'idle', но не с 'stop .

3
задан 17 September 2013 в 03:05

1 ответ

В вашем конфигурационном файле выскочки отсутствует раздел exec или script, и вы, похоже, хотите начать все только с помощью команды предварительного запуска, что неверно. Согласно документации выскочки ( http://upstart.ubuntu.com/getting-started.html ):

Все файлы заданий должны иметь раздел exec или script. Это указывает, что будет запущено для работы.

Дополнительный код оболочки может быть задан до или после двоичного файла или сценария, указанных в exec или script. Они не должны начинать процесс, на самом деле, они не могут. Они предназначены для подготовки окружающей среды и последующей очистки.

Кроме того, то, что запрашивает ваша исходная задача («Не запускаются долго работающие сервис / демон, только краткосрочные действия.»), кажется, противоречит тому факту, что ваш script.sh имеет start и stop action, который делает , предлагает долго работающего демона.

description     "test script"

start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]

task

# Assuming script.sh start starts, performs a process, and then exits,
# this should work
exec /full/path/to/script.sh start

# No need for a pre-stop

Предполагаемый устаревший документ, на который я ссылался, устарел, вы также можете взглянуть на http://upstart.ubuntu.com/cookbook/ , который является хорошим справочным материалом и содержит полезные примеры. Поэтому я предлагаю вам прочитать его, если что-то пока неясно.

0
ответ дан 17 September 2013 в 03:05

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

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