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

Как правильно запустить сценарий Ubuntu Upstart из другого сценария Upstart?

У меня есть три сценария Ubuntu Upstart:

Цепочка это:

  1. screen запускается на уровнях выполнения 2, 3, 4, 5
  2. browsers настроен на start on started screen и чтобы stop on stopping screen
  3. каждый экземпляр browser PORT=? воля stop on stopping browsers и будет начат browsers

Проблема

screen начинается нормально, но не запускается browsers (или это так и browsers не запускается browser PORT=?).

Если я sudo start browser PORT=1 все работает нормально, а sudo start browsers даже не запускается.

Код

#screen.conf
env DISPLAY=:99
env USER=worker

start on runlevel [2345]
stop on runlevel [!2345]

respawn

script 
        su ${USER} -c "/usr/bin/Xvfb ${DISPLAY}"
end script

#browsers.conf
start on started screen
stop on runlevel [!2345] or stopping screen

respawn

expect fork #the following "start browser ..." do fork

script
       start browser PORT=4242
       start browser PORT=4243
       start browser PORT=4244
       start browser PORT=4245
end script

#browser.conf
instance $PORT

stop on runlevel [!2345]
stop on stopping browsers or stopping screen

respawn

script 
        su ${USER} -c "/usr/bin/firefox -no-remote -P ${PORT} --display ${DISPLAY}"
end script

ОБНОВЛЕНИЕ (21.10.2010): приведенный выше (измененный) код теперь работает. Однако, когда мне нужно stop browsers, все экземпляры browser PORT=? корректно завершаются, а "браузеры" застревают.

Как мне решить эту другую проблему?

Lucid поставляется с выскочкой v0.6.x, что означает, что у вас не может быть нескольких строк «stop on» или «start on». Вы должны сочетать условия вместе с and, or & скобки.

Вы можете прочитать синтаксис описания вакансии на странице руководства init (5) (доступно онлайн или беги man 5 init в терминале).