从另一个Upstart脚本启动Ubuntu Upstart脚本的正确方法是什么?

我有三个Ubuntu的Upstart脚本:

  • browser以非特权用户身份运行Firefox的一个实例
  • screen启动并启动时, browsers启动
    • browser PORT=1
    • browser PORT=2
    • browser PORT=3
  • screen启动一个Xvfb服务器

链是:

  1. screen从运行级别2,3,4,5开始
  2. browsersconfiguration为start on started screenstop 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 

更新(2010年10月21日):上面的(修改)代码现在工作。 但是,当我需要stop browsersbrowser PORT=?所有实例browser PORT=? 正确终止,而“浏览器”卡住了。

我该如何解决这个问题?

Lucid自带了新贵v0.6.x,这意味着你不能有多个“停止”或“开始”行。 您必须将条件与“ andor “括号”组合在一起。

您可以阅读init(5)联机帮助页面( 可在线获取或在terminal中运行man 5 init )中的作业说明语法。