Eu tenho batido minha cabeça contra isso por um bom tempo agora. Está relacionado a esta pergunta . Gostaria de descobrir exatamente o que acontece quando escolho desligar minha caixa do Linux a partir da GUI. Isso parece estar mal documentado (se é que existe).
Idealmente, espero uma resposta independente de DE e OS. Exceto isso, estou interessado no caso específico do Mandriva 2010.1 e Debian 6.x (Squeeze) e 7.0 (Wheezy), todos rodando o Gnome. (Se você está prestando muita atenção, sim, é o Gnome 2 e o Gnome 3)
Basicamente, gostaria de saber qual comando / script / sequência de scripts é iniciado quando pressiono "Desligar" ou "Reiniciar" para poder modificar o comportamento deles. Algumas postagens no fórum que eu olhei sugerem hackers, /etc/polkit-1/*
mas essa estrutura de diretórios é apenas um esqueleto na minha caixa Debian (Squeeze), por exemplo.
Alguém pode ajudar?
EDITAR
O que eu tentei até agora
- Substituído o
shutdown
executável por um script próprio. Isso não funciona: quando eu pressiono oshutdown
Gnome efetua logout sem executar meu script. - Tentei editar o menu do Gnome 2. Sem alegria: as opções "Desligar", "Sair" e "Bloquear tela" não aparecem no editor de menus.
- Olhado
/usr/share/menu
, nada de útil lá.
Possíveis avenidas para a solução
strace
as opções da GUI (isso é possível?)- Olhando para
shutdown
o código fonte do - Olhando para
gnome-session
o código fonte do
Atualizar
De acordo com meus comentários na resposta abaixo, analisei as polkit
ações abaixo /usr/share/polkit-1/actions/
e encontrei (no arquivo org.freedesktop.consolekit.policy
) uma ação chamada org.freedesktop.consolekit.system.stop-multiple-users
que lança a mensagem
System policy prevents stopping the system when other users are logged in
Estou pensando (devido à org.freedesktop.*
convenção de nomenclatura) que esse é algum tipo de sinal enviado ao DM via D-BUS. Além disso, essa mensagem aparece ao tentar desligar graficamente enquanto outros usuários estão conectados; portanto, o mecanismo que a aciona deve ser o mesmo mecanismo acionado quando "Desligar" ou "Desligar" é selecionado na GUI.
Alguém pode confirmar / refutar? Existe a possibilidade de alguma forma interceptar esse sinal ou modificá-lo?
/etc/init.d/rc.local
para chamar um script ao ser interrompido .