Considerando o seu requisito de executar um trabalho quando você faz login no Unity e não em outros logons, um trabalho de sessão Upstart parece perfeito.
Você deve ter notado: os processos executados após o login na GUI estão sob um segundo init
processo. Esse init
é um init Upstart adequado e você pode iniciar e interromper trabalhos de sessão com base nos eventos emitidos por ele. Não são necessários privilégios de root. Melhor ainda (ou pior, dependendo da perspectiva), isso ainda não é completamente suportado por sistemas sem cabeça. Um login SSH não iniciou o init do usuário a partir de um teste rápido que eu fiz agora.
Para criar um trabalho de sessão, crie um novo .conf
arquivo ~/.config/upstart
. Esse é o diretório principal padrão dos trabalhos de sessão Upstart ( $XDG_CONFIG_HOME/upstart
), crie-o se não existir. Aqui está um exemplo de trabalho:
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
Você pode controlá-lo manualmente:
start myjob
# or
initctl start myjob
O service
comando é usado para controlar os trabalhos do sistema (aqueles em /etc/init.d
ou /etc/init
). Para controlar trabalhos de sessão, é necessário usar o initctl
comando, usado para interagir com o Upstart.
Veja man upstart-events
para mais eventos que você pode usar.