Teniendo en cuenta su requisito de ejecutar un trabajo cuando inicia sesión en Unity y no para otros inicios de sesión, un trabajo de sesión Upstart parece perfecto.
Es posible que lo hayas notado: los procesos que ejecutas después de un inicio de sesión de GUI están bajo un segundo init
proceso. Este init
es un inicio de inicio adecuado, y puede iniciar y detener trabajos de sesión en función de los eventos emitidos por él. No se necesitan privilegios de root en absoluto. Mejor aún (o peor dependiendo de la perspectiva), esto aún no es completamente compatible con los sistemas sin cabeza. Un inicio de sesión SSH no inició el inicio del usuario desde una prueba rápida que hice justo ahora.
Para crear un trabajo de sesión, cree un nuevo .conf
archivo en ~/.config/upstart
. Ese es el directorio primario predeterminado para los trabajos de sesión Upstart ( $XDG_CONFIG_HOME/upstart
), créelo si no existe. Aquí hay un ejemplo de trabajo:
tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end
script
firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF
Puedes controlarlo manualmente:
start myjob
# or
initctl start myjob
Los service
comandos se utilizan para controlar los trabajos del sistema (aquellos en /etc/init.d
o /etc/init
). Para controlar los trabajos de sesión, es necesario usar el initctl
comando, que se usa para interactuar con Upstart.
Vea man upstart-events
para más eventos que puede usar.