我已经为此奋斗了很长时间。这与这个问题有关。我想弄清楚当我选择从GUI关闭我的Linux机器时会发生什么。这似乎没有记录(如果有的话)。
理想情况下,我希望获得与DE和操作系统无关的答案。除非如此,我对Mandriva 2010.1和Debian 6.x(Squeeze)和7.0(Wheezy)都运行Gnome的特定情况感兴趣。(如果您密切关注,是的,那就是Gnome 2和Gnome 3)
基本上,我想知道当我按“ Shut Down”或“ Restart”时启动哪个命令/脚本/脚本序列,以便我可以修改它们的行为。我看过一些论坛帖子建议黑客入侵,/etc/polkit-1/*
但是例如,此目录结构只是我的Debian(Squeeze)盒上的骨架。
有人可以帮忙吗?
编辑
到目前为止我尝试过的
shutdown
用我自己的脚本替换了可执行文件。这是行不通的:当我按shutdown
Gnome时,将不执行脚本而注销。- 尝试编辑Gnome 2菜单。不高兴:菜单编辑器中没有出现“关闭”,“注销”和“锁定屏幕”选项。
- 看了看
/usr/share/menu
,那里没有任何帮助。
解决方案的可能途径
strace
GUI选项(甚至可能吗?)- 看
shutdown
的源代码 - 看
gnome-session
的源代码
更新资料
根据我对以下答案的评论,我调查了下面的polkit
操作,/usr/share/polkit-1/actions/
并在文件中找到了org.freedesktop.consolekit.policy
一个org.freedesktop.consolekit.system.stop-multiple-users
引发消息的调用(在文件中)
System policy prevents stopping the system when other users are logged in
我在想(由于org.freedesktop.*
命名约定)这是通过D-BUS发送到DM的某种信号。此外,在尝试以图形方式关闭其他用户登录时显示此消息时,因此触发该消息的机制必须与从GUI中选择“关闭”或“关闭电源”时触发的机制相同。
谁能确认/驳斥?是否有可能以某种方式截获此信号或对其进行修改?
/etc/init.d/rc.local
来在停止时调用脚本。