J'utilise le serveur Ubuntu 11.04. J'ai créé un travail utilisateur Upstart comme décrit ici .
J'ai le fichier suivant chez moi /home/myuser/.init/sensors.conf
:
start on started mysql
stop on stopping mysql
chdir /home/myuser/mydir/project
exec /home/myuser/mydir/env/bin/python /home/myuser/mydir/project/manage.py sensors
respawn
respawn limit 10 90
Comme myuser
je peux démarrer, arrêter et recharger le travail correctement, cela fonctionne parfaitement:
$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting
Le problème est que le travail ne démarre pas automatiquement au démarrage au démarrage mysql
. Après un nouveau démarrage, mysql
fonctionne mais mon sensors
travail ne l'est pas.
Ce qui est étrange, c'est que même si le travail ne démarre pas au démarrage, si je le sudo
redémarre, mysql
il démarre effectivement mon travail. Les commandes suivantes sont exécutées à myuser
partir d'un nouveau démarrage:
$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229
La documentation des travaux utilisateur Upstart est assez limitée. Quelle est la bonne technique pour démarrer automatiquement un travail utilisateur au démarrage du système?
Je sais que je peux jeter quelque chose dans rc.local
pour commencer, ou je pouvais bouger mon sensors.conf
à /etc/init
mais je suis curieux de savoir s'il y a un moyen de le faire en utilisant simplement Upstart.
En regardant des sources comme
/etc/init/mysql.conf
et http://upstart.ubuntu.com/cookbook/#start-on, il me semble que vous devriez changer votrestart on
ligne en quelque chose comme ceci:Je ne suis pas sûr d'être d'accord sur le fait que le débutant manque de documentation, mais j'ai du mal à comprendre les documents parfois. Je fais généralement des essais et des erreurs jusqu'à ce que cela fonctionne. La solution ci-dessus peut être exagérée en fait ... quelque chose d'aussi simple que cela peut être suffisant:
la source
start on
ligne, mais c'est juste le fait que upstart ne charge que / etc / init au démarrage, mais pas les fichiers init de l'utilisateur dans leur$HOME/.init
/etc/init
. Vous avez raison, la documentation semble manquer pour cela et je ne sais pas comment vous assurer que les~/.init
scripts sont démarrés.$HOME/.init
travaux ne sont pas activés par défaut et que certaines modifications/etc/dbus-1/system.d/Upstart.conf
peuvent être nécessaires. upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user