Ho sbattuto la testa contro questo per un po 'di tempo ormai. È legato a questa domanda . Vorrei scoprire esattamente cosa succede quando scelgo di chiudere il mio box Linux dalla GUI. Questo sembra essere scarsamente documentato (se non del tutto).
Idealmente, spero in una risposta agnostica tra DE e OS. A parte questo, sono interessato al caso specifico di Mandriva 2010.1 e Debian 6.x (Squeeze) e 7.0 (Wheezy) che eseguono tutti Gnome. (Se stai prestando molta attenzione, sì, questo è Gnome 2 e Gnome 3)
Fondamentalmente, vorrei sapere quale comando / script / sequenza di script viene avviato quando premo "Chiudi" o "Riavvia" in modo da poter modificare il loro comportamento. Alcuni post sul forum che ho visto suggeriscono l'hacking, /etc/polkit-1/*
ma questa struttura di directory è solo uno scheletro sulla mia casella Debian (Squeeze), per esempio.
Qualcuno può aiutare?
MODIFICARE
Quello che ho provato finora
- Sostituito l'
shutdown
eseguibile con una mia sceneggiatura. Questo non funziona: quando premoshutdown
Gnome esco senza eseguire il mio script. - Ho provato a modificare il menu di Gnome 2. Nessuna gioia: le opzioni "Spegni", "Disconnetti" e "Blocca schermo" non compaiono nell'editor di menu.
- Guardato
/usr/share/menu
, niente di utile lì.
Possibili strade per la soluzione
strace
le opzioni della GUI (è anche possibile?)- Guardando
shutdown
il codice sorgente - Guardando
gnome-session
il codice sorgente
Aggiornare
Secondo i miei commenti sulla risposta di seguito, ho esaminato le polkit
azioni sotto /usr/share/polkit-1/actions/
e ho trovato (nel file org.freedesktop.consolekit.policy
) un'azione chiamata org.freedesktop.consolekit.system.stop-multiple-users
che lancia il messaggio
System policy prevents stopping the system when other users are logged in
Sto pensando (a causa della org.freedesktop.*
convenzione di denominazione) che si tratta di una sorta di segnale inviato al DM tramite D-BUS. Inoltre, questo messaggio appare quando si tenta di arrestare graficamente mentre altri utenti sono connessi, quindi il meccanismo che lo attiva deve essere lo stesso meccanismo attivato quando si seleziona "Spegni" o "Spegni" dalla GUI.
Qualcuno può confermare / confutare? C'è la possibilità di intercettare in qualche modo questo segnale o modificarlo?
/etc/init.d/rc.local
per chiamare uno script quando viene arrestato .