设置RHEL7电源按钮的行为

用户有时候会遇到在 RHEL7/ Centos7 中按下电源按钮,出现“诡异”现象。比如为什么按下电源键就黑屏了没关机。这里的“电源按钮”,包括了物理的按钮和虚拟机的“关机”按钮。

RHEL7中的电源键行为主要有两个影响因素,systemd 和 gnome3.

如果系统运行在 multi-user.target 下,则考虑 systemd 的设置。如果系统运行在 graphical.target 下,则考虑 gnome 的设置。

Systemd

systemd-logind 会捕获电源键,然后作出相应的行为。默认是 poweroff, 但也可以设置为 "ignore", "poweroff", "reboot", "halt", "kexec", "suspend", "hibernate", "hybrid-sleep" 和 "lock" 其中之一。在 /etc/systemd/logind.conf 中可以修改。

HandlePowerKey=suspend

Gnome 3

有不少用户会在服务器上运行图形界面,虽然我不知道为什么。

RHEL7 的默认桌面是 Gnome 3。 在 Gnome 3 启动后,它会接管 systemd 对电源按钮的控制。

默认情况下,按下电源键会进入休眠状态。可以通过以下命令进行调整。

修改某个用户的配置
在这个用户下,执行:

$ gsettings set org.gnome.settings-daemon.plugins.power button-power shutdown

shutdown 可以替换成 'blank', 'suspend', 'shutdown', 'hibernate', 'interactive', 'nothing','logout' 其中之一。

全局设置(强制所有用户遵守)
创建 /etc/dconf/db/local.d/00-power 文件,写入以下内容:

[org/gnome/settings-daemon/plugins/power]
button-power='nothing'

再创建一个lock文件,强制让所有用户遵守该设置:
/etc/dconf/db/local.d/locks/power

/org/gnome/settings-daemon/plugins/power/button-power

更新 dconf:

# dconf update