Ejecución de trabajos de usuario Upstart al inicio

8

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

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 comenzar, detener y volver a cargar 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 en el arranque cuando se mysqlinicia. Después de un nuevo arranque, se mysqlestá ejecutando pero mi sensorstrabajo no.

Lo que es extraño es que, aunque el trabajo no comienza en el arranque, si lo uso sudopara reiniciarlo mysql, sí lo hace. Los siguientes comandos se ejecutan myuserdesde un inicio nuevo:

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

La documentación para los trabajos del usuario 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 sólo puede tirar algo en rc.localiniciarlo, o me podía mover sensors.confa /etc/initpero tengo curiosidad si hay una manera de hacerlo utilizando sólo Upstart.

dgel
fuente

Respuestas:

8

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

Lo describí con más detalle en http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html y también escribí un trabajo de Upstart que funciona alrededor del problema.

bradley.ayers
fuente
Hay otra forma de hacer esto documentada en upstart.ubuntu.com/cookbook/… ; sin embargo, tiene un error, deberá cambiar "start session_init" a "start session-init".
natevw
-1

Mirando fuentes como /etc/init/mysql.confy http://upstart.ubuntu.com/cookbook/#start-on me parece que debería cambiar su start onlínea a algo como esto:

start on (mysql and runlevel [2345])

No estoy seguro de estar de acuerdo en que la nueva empresa carece de documentación, pero a veces me cuesta entender los documentos. Por lo general, solo hago prueba y error hasta que funciona. La solución anterior puede ser exagerada en realidad ... algo tan simple como esto puede ser suficiente:

start on mysql
Carl Zulauf
fuente
No es que la nueva empresa carezca de documentación en general, es que no tiene mucha documentación sobre los trabajos de los usuarios: trabajos colocados en /home/$USER/.init (no trabajos colocados en / etc / init).
dgel
Intenté tus sugerencias pero no hay diferencia. No es un problema con mi start onlínea, pero es solo el hecho de que el arranque solo carga / etc / init al inicio, pero no los archivos de inicio del usuario en su$HOME/.init
dgel
Lo sentimos, perdí que este era un trabajo de usuario y no un trabajo en /etc/init. Tiene razón en que parece que falta documentación para eso y no estoy seguro de cómo asegurar que ~/.initse inicien los scripts.
Carl Zulauf
Los documentos que pude encontrar indican que los $HOME/.inittrabajos no están habilitados de manera predeterminada y que algunos cambios /etc/dbus-1/system.d/Upstart.confpodrían ser necesarios. upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user
Carl Zulauf