Назад | Перейти на главную страницу

Выскочка Ubuntu использует один сценарий для запуска нескольких других

Этот скрипт запустит службы:

#!upstart

description "example.com"
author      "Geert"

script
  for service in "website" "feeds" "jobs"
  do
    exec start service.example.com service=$service
  done
end script

Сервисный скрипт выглядит так:

#!upstart

description "service.example.com"
author      "Geert"

start on (local-filesystems and net-device-up IFACE=eth0) 
stop  on shutdown

respawn                # restart when job dies

instance $service

script
  exec /home/fs/.nvm/v0.6.7/bin/coffee /home/fs/Dropbox/work/2012/krafters/$service.coffee
end script

У меня проблема в том, что он создает только сервис веб-сайта.

initctl list | grep example
example.com stop/waiting
service.example.com (website) start/running, process 22787

Во-первых, файлы конфигурации задания Upstart (файлы .conf) не являются сценариями в обычном смысле слова: первая строка, которая у вас есть ('#!upstart') полностью лишний и будет рассматриваться только как комментарий.

Ваша проблема в использовании "exec'в первом файле .conf с циклом for: exec заменяет запущенную в данный момент оболочку любым аргументом, который вы передаете exec, поэтому будет запущена только первая запись в цикле for.

Чтобы исправить это, просто удалите 'exec'в первом файле .conf.