У меня есть три сценария Ubuntu Upstart:
browser
запускает экземпляр firefox от имени непривилегированного пользователяbrowsers
начинается когда screen
запускается и запускается browser PORT=1
browser PORT=2
browser PORT=3
screen
запускает сервер XvfbЦепочка это:
screen
запускается на уровнях выполнения 2, 3, 4, 5browsers
настроен на start on started screen
и чтобы stop on stopping screen
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
в терминале).