Ejecución de trabajos de usuario Upstart al inicio

Ejecución de trabajos de usuario Upstart al inicio

Estoy ejecutando el servidor Ubuntu 11.04. He creado un trabajo de usuario Upstart como se describeaquí.

Tengo el siguiente archivo en mi /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

Como myuserpuedo iniciar, detener y recargar el trabajo bien, funciona perfectamente:

$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting

El problema es que el trabajo no se inicia automáticamente al arrancar cuando mysqlse inicia. Después de un nuevo arranque, mysqlse está ejecutando pero mi sensorstrabajo no.

Lo extraño es que, aunque el trabajo no comienza al arrancar, si lo reinicio, sudomysqlcomienza mi trabajo. Los siguientes comandos se ejecutan myuserdesde un nuevo inicio:

$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229

La documentación para trabajos de usuarios Upstart es bastante limitada. ¿Cuál es la técnica correcta para que un trabajo de usuario se inicie automáticamente al iniciar el sistema?

Sé que puedo simplemente agregar algo rc.localpara iniciarlo, o podría moverlo sensors.confa /etc/init, pero tengo curiosidad por saber si hay una manera de hacerlo usando solo Upstart.

Respuesta1

El problema es que los trabajos de los usuarios no se cargan en Upstart hasta que el usuario crea una sesión de Upstart ejecutando uno de los initctlcomandos.

Lo he descrito con más detalle enhttp://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.htmly también escribí un trabajo Upstart que soluciona el problema.

Respuesta2

Mirando fuentes como /etc/init/mysql.confyhttp://upstart.ubuntu.com/cookbook/#start-onMe parece que deberías cambiar tu start onlínea a algo como esto:

start on (mysql and runlevel [2345])

No estoy seguro de estar de acuerdo con que el advenedizo carezca de documentación, pero a veces me cuesta entender los documentos. Normalmente hago prueba y error hasta que funciona. La solución anterior puede ser excesiva en realidad... algo tan simple como esto puede ser suficiente:

start on mysql

información relacionada