He estado golpeando mi cabeza contra esto por bastante tiempo. Está relacionado con esta pregunta . Me gustaría saber exactamente qué sucede cuando elijo cerrar mi caja de Linux desde la GUI. Esto parece estar mal documentado (si es que lo está).
Idealmente, espero una respuesta independiente de SO y SO. Salvo eso, estoy interesado en el caso específico de Mandriva 2010.1 y Debian 6.x (Squeeze) y 7.0 (Wheezy) que ejecutan Gnome. (Si estás prestando mucha atención, sí, eso es Gnome 2 y Gnome 3)
Básicamente, me gustaría saber qué comando / secuencia de comandos / secuencia de secuencias de comandos se inicia cuando presiono "Apagar" o "Reiniciar" para poder modificar su comportamiento. Algunas publicaciones en el foro que vi sugieren piratería, /etc/polkit-1/*
pero esta estructura de directorio es solo un esqueleto en mi cuadro de Debian (Squeeze), por ejemplo.
¿Alguien puede ayudar?
EDITAR
Lo que he intentado hasta ahora
- Reemplacé el
shutdown
ejecutable con un script propio. Esto no funciona: cuando presionoshutdown
Gnome cierra la sesión sin ejecutar mi script. - Intenté editar el menú de Gnome 2. Sin alegría: las opciones "Apagar", "Cerrar sesión" y "Bloquear pantalla" no aparecen en el editor de menús.
- Visto
/usr/share/menu
, nada útil allí.
Posibles vías para la solución
strace
ing las opciones de GUI (¿es esto posible?)- Mirando
shutdown
el código fuente - Mirando
gnome-session
el código fuente
Actualizar
Según mis comentarios sobre la respuesta a continuación, busqué polkit
acciones debajo /usr/share/polkit-1/actions/
y encontré (en el archivo org.freedesktop.consolekit.policy
) una acción llamada org.freedesktop.consolekit.system.stop-multiple-users
que arroja el mensaje
System policy prevents stopping the system when other users are logged in
Estoy pensando (debido a la org.freedesktop.*
convención de nomenclatura) que se trata de algún tipo de señal enviada al DM a través de D-BUS. Además, este mensaje aparece cuando se intenta cerrar gráficamente mientras otros usuarios están conectados, por lo que el mecanismo que lo activa debe ser el mismo que se activa cuando se selecciona "Apagar" o "Apagar" desde la GUI.
¿Alguien puede confirmar / refutar? ¿Existe la posibilidad de interceptar de alguna manera esta señal o modificarla?
/etc/init.d/rc.local
para llamar a un script cuando se detenga .