1 votes

Quelle est la bonne façon de démarrer un Upstart Ubuntu script à partir d'un autre Upstart script ?

J'ai trois Ubuntu Upstart scripts :

  • browser exécute une instance de firefox en tant qu'utilisateur non privilégié
  • browsers commence lorsque screen est démarré et lance
    • browser PORT=1
    • browser PORT=2
    • browser PORT=3
  • screen démarre un serveur Xvfb

La chaîne est :

  1. screen commence aux niveaux d'exécution 2, 3, 4, 5
  2. browsers est configuré pour start on started screen et à stop on stopping screen
  3. chaque cas browser PORT=? sera stop on stopping browsers et sera lancé par browsers

Numéro

screen démarre bien mais ne démarre pas browsers (ou il le fait et browsers ne parvient pas à démarrer browser PORT=? ).

Si je sudo start browser PORT=1 tout fonctionne bien, alors que sudo start browsers ne démarre même pas lui-même.

Code

#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

MISE À JOUR (10/21/2010) : le code (modifié) ci-dessus fonctionne maintenant. Cependant, lorsque je dois stop browsers toutes les instances de browser PORT=? sont correctement terminés, alors que ``browsers`` reste bloqué.

Comment puis-je résoudre cet autre problème ?

1voto

JanC Points 400

Lucid est livré avec upstart v0.6.x, ce qui signifie que vous ne pouvez pas avoir plusieurs lignes "stop on" ou "start on". Vous devez combiner les conditions ensemble avec and , or et entre parenthèses.

Vous pouvez lire la syntaxe de la description des tâches dans la page de manuel init(5) ( disponible en ligne ou courir man 5 init dans un terminal).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X