ОС: 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
Проблемы:
Можно ли решить исходную задачу с помощью сценариев выскочки?
Спасибо.
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 .
В вашем конфигурационном файле выскочки отсутствует раздел exec
или script
, и вы, похоже, хотите начать все только с помощью команды предварительного запуска, что неверно. Согласно документации выскочки ( http://upstart.ubuntu.com/getting-started.html ):
Все файлы заданий должны иметь раздел exec или script. Это указывает, что будет запущено для работы.
Дополнительный код оболочки может быть задан до или после двоичного файла или сценария, указанных в exec или script. Они не должны начинать процесс, на самом деле, они не могут. Они предназначены для подготовки окружающей среды и последующей очистки.
blockquote>Кроме того, то, что запрашивает ваша исходная задача («Не запускаются долго работающие сервис / демон, только краткосрочные действия.»), кажется, противоречит тому факту, что ваш
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/ , который является хорошим справочным материалом и содержит полезные примеры. Поэтому я предлагаю вам прочитать его, если что-то пока неясно.