2010-04-14 16 views
12

He escrito una aplicación de registro en Python que debe comenzar desde el arranque, pero no he podido iniciar la aplicación con Ubuntu's Upstart init daemon. Cuando se ejecuta desde la terminal con sudo /usr/local/greeenlog/main.pyw, la aplicación funciona perfectamente. Aquí es lo que he tratado para el trabajo Upstart:Necesito ayuda para ejecutar la aplicación Python como servicio en Ubuntu con Upstart

/etc/init/greeenlog.conf

# greeenlog 

description  "I log stuff." 

start on startup 
stop on shutdown 

script 
    exec /usr/local/greeenlog/main.pyw 
end script 

Mi aplicación se inicia un hilo hijo, en caso de que sea importante. He intentado el trabajo con la estrofa fork sin ningún cambio en los resultados. También he intentado esto con sudo y sin las instrucciones de secuencia de comandos (solo una declaración ejecutiva en solitario). En todos los casos, después de arrancar, correr estado greeenlog vuelve parada greeenlog/esperando y funcionando inicio greeenlog devuelve:

start: Rejected send message, 1 matched rules; type="method_call", sender=":1.61" (uid=1000 pid=2496 comm="start) interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")) 

Puede alguien ver lo que estoy haciendo mal? Agradezco cualquier ayuda que puedas dar. Gracias.

+1

Cuando intenta 'sudo start greeenlog', ¿todavía dice el mensaje de error' (uid = 1000 pid = 2496 comm = "start)'? Por cierto, configuré un /etc/init/greeenlog.conf como usted describió y tuvo éxito con el comando 'sudo start greeenlog'. – unutbu

+0

¡Buena llamada! sudo start greeenlog devuelve greeenlog start/running, proceso 2609, pero la aplicación realmente no se inicia y no se registra nada. Una llamada subsiguiente al estado greeenlog return greeenlog stop/waiting. De nuevo, la aplicación funciona perfectamente con sudo /usr/local/greeenlog/main.pyw. ¿Qué me estoy perdiendo? – GreeenGuru

+2

Suena como 'main.pyw' podría estar fallando cuando se ejecuta upstart. Tal vez intente poner 'exec /usr/local/greeenlog/main.pyw> /tmp/main.out 2> & 1' en' greeenlog.conf' para que pueda ver algunos mensajes de error. – unutbu

Respuesta

11

Gracias a la ayuda de unutbu, he podido corregir mi trabajo. Al parecer, estas son las únicas variables de entorno que los conjuntos de Upstart (recuperados en Python con os.environ):

{'TERM': 'linux', 'PWD': '/', 'UPSTART_INSTANCE': '', 'UPSTART_JOB': 'greeenlog', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin'} 

Mi programa se basa en un par de estas variables está establecido, por lo que aquí es el trabajo revisada con el variables de entorno correctas:

# greeenlog 

description  "I log stuff." 

start on startup 
stop on shutdown 

env DISPLAY=:0.0 
env GTK_RC_FILES=/etc/gtk/gtkrc:/home/greeenguru/.gtkrc-1.2-gnome2 

script 
    exec /usr/local/greeenlog/main.pyw > /tmp/greeenlog.out 2>&1 
end script 

¡Gracias!

Cuestiones relacionadas