Quero executar um script antes de sair da minha sessão do GNOME, para me avisar se esqueci um pendrive conectado à máquina.
No entanto, todas as soluções que encontrei não foram suficientes para mim:
Essa pergunta semelhante sugere a edição do
/etc/gdm/PostSession/Default
arquivo, mas não tenho permissões para fazer isso. (No momento, o arquivo está vazio na minha máquina, portanto, não há ganchos existentes para tirar vantagem)Também encontrei esta postagem sugerindo uma solução alternativa, mas, de acordo com a primeira resposta, ela não funcionará se eu desligar o computador em vez de apenas fazer logoff.
Respostas:
Como você está usando o Gnome, você pode usar o script Python abaixo, adaptado do que você mencionou.
Ele precisa de um logout do Gnome (ie
gnome-session-quit
) (ou desligamento do gnome), o que acontece quando usamos o logout na GUI. AFAIK nenhum processo pode bloquear um desligamento pelo comandosudo shutdown -h 0
ou porsudo poweroff
. Quandoshutdown
é executado, ele fornece ao SIGTERM todos os processos e alguns segundos para eles saírem (depois de executar alguns scripts que não podem ser editados por usuários não-root). Caso contrário, os processos encerrados são extintos pela SIGKILL.Este é o procedimento passo a passo do
gnome_save_yourself
método. Vamos fazer um teste.Salve o código a seguir como
~/Desktop/execute_script_on_shutdown.sh
(em http://www.linuxquestions.org/questions/linux-desktop-74/gnome-run-script-on-logout-724453/#post3560301 )Torne executável:
Salve o seguinte como
~/Desktop/shutdown_script.sh
Execute o script principal
Agora você sente que o script espera por algo
Verifique se há um arquivo nomeado
AAAAAAAAAAAAAAAAAAAAAAAAAAA
na sua área de trabalho.Se você vir o arquivo tudo bem. Agora você pode editar o
shutdown_script.sh
para atender às suas necessidades. Lembre-se também de executar oexecute_script_on_shutdown.sh
login (ou torná-lo executável automaticamente na inicialização).fonte
Se você deseja que sua sessão seja bloqueada em todas as circunstâncias, você precisa de privilégios de root. Não há maneira de contornar isso. A raiz do usuário pode sempre
kill -9
seus processos. Estou surpreso que um desligamento não faça o gnomo emitir o sinal "salve a si mesmo". Também acredito que os scripts "PostSession" são executados somente após o término do gnome-session e (acredito) logo antes do Xserver terminar, o que significa que não é o lugar em que você deseja colocar um aviso que deve aparecer na tela (se Estou correto).O que pode funcionar é um aplicativo Gnome que: a) reage ao evento do gnomo "salve a si mesmo"; b) reage ao SIGTERM da mesma maneira que reage ao "salvaguarda". Além disso, há pouco que você pode fazer, especialmente sem privilégios de root.
No entanto, você pode resolver o problema não raiz: Escreva um script PostSession que faça o que você deseja e sugira a alguém com privilégios de root para implantá-lo em todas as máquinas, pois é uma ferramenta sensata que ajuda muito os usuários. Normalmente, os caras com privilégios de root são pagos para fazer / manter os usuários felizes. :-)
Qual é o problema que você está tentando resolver? Por que você não pode sair da sua sessão quando um pendrive é conectado?
Você pode ter um cliente dbus que exibe "Não se esqueça de desconectar o dispositivo!" quando o gvfs anuncia a desmontagem de um sistema de arquivos em um dispositivo USB. Mas eu não sei o quão bem isso funciona ou serve a seus propósitos.
fonte
Finalmente consegui testar o script Python que mencionei como a segunda opção na minha pergunta. Acontece que ele faz trabalho quando pedindo para encerrar bem, não apenas na reinicialização.
fonte