Como executo um script no login / logoff da Unity?

8

Eu tenho dois scripts - um para montar algumas pastas em SSHFS - e um para desmontar.

Eu gostaria de lançar o script de montagem quando meu desktop Ubuntu padrão for iniciado (depois de logar no console gráfico) - e o script de desmontagem quando eu "Sair ..." da roda dentada no topo - direito da área de trabalho.

Por favor alguém pode me dizer como conseguir isso? Quais são os ganchos mais convenientes / padrão para executar comandos na inicialização / saída da área de trabalho?

    
por aSteve 29.08.2014 / 17:16

3 respostas

1

A solução foi usar tarefas iniciantes. Eu precisei de duas tarefas - uma disparada quando a área de trabalho inicializa para um usuário; o segundo quando a sessão de usuários expira. Os dois scripts a seguir funcionam para mim no Ubuntu 14.04.

Em ~ / .config / upstart / desktopOpen.conf

description "Desktop Open Task"
start on desktop-start
task
script
# Commands to mount sshfs go here as shell-script.
end script

Em ~ / .config / upstart / desktopClose.conf

description "Desktop Close Task"
start on session-end
task
script
# Commands to unmount sshfs go here as shell-script.
end script

Meus dedos estão cruzados que esses eventos continuarão a atender aos requisitos em futuros lançamentos do Ubuntu. Eu achei que valeria a pena postar minha solução aqui - no caso de ser útil aos outros.

    
por aSteve 17.11.2016 / 21:42
9

Considerando sua exigência de executar um trabalho quando você faz o login no Unity e não em outros logins, um trabalho de sessão parece perfeito.

Você deve ter notado: os processos que você executa após um login da GUI estão sob um segundo processo init . Esse init é um init adequado do Upstart e você pode iniciar e interromper tarefas de sessão com base nos eventos emitidos por ele. Nenhum privilégio de root é necessário. Melhor ainda (ou pior, dependendo da perspectiva), isso ainda não é totalmente 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 arquivo .conf em ~/.config/upstart . Esse é o diretório principal padrão para tarefas de sessão do Upstart ( $XDG_CONFIG_HOME/upstart ), crie-o se ele 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 comando service é usado para controlar as tarefas do sistema (aquelas em /etc/init.d ou /etc/init ). Para controlar os trabalhos da sessão, é necessário usar o comando initctl , que é usado para interagir com o Upstart.

Veja man upstart-events para mais eventos que você pode usar.

    
por muru 31.08.2014 / 19:12
-1

Aqui estão algumas sugestões para executar um script após o login:

Script do StackOverflow Linux após a inicialização a>: Cliff notes é colocar seu arquivo * .sh em /etc/profile.d.

Se você deseja executar scripts durante a inicialização, veja algumas sugestões para isso:

Script do StackOverflow Linux após a inicialização : Notas do Cliff são para usar /etc/rc.local ou crontab.

    
por Higgs 29.08.2014 / 21:48