如何更改 debian 10 systemd 下的电源按钮关闭操作以运行自定义脚本而不是关闭系统?
当这个问题由 acpi 处理时,人们可以编辑 /etc/acpi 中的脚本。到目前为止,我发现的唯一建议是用我的脚本替换各种与电源相关的二进制文件。
有没有办法在不替换二进制文件的情况下做到这一点?
答案1
这取决于你想做什么。
如果您只需要在运行某些操作时暂时阻止断电,请参阅
systemd-inhibit
。您还可以像这样阻止睡眠、暂停等。您还可以暂时(只要您的程序正在运行)告诉 systemd 忽略电源按钮,以便让其他程序对其进行操作。如果您只想在关闭之前运行一些额外的代码,那么您可以通过 启动您的服务
poweroff.target
。您可能还需要考虑shutdown.target
和reboot.target
。 (我认为,如果您想完全更改电源按钮的功能,您也可以将 更改poweroff.target
为不拉入- 但要小心类似的事情,也请经历这一过程)。systemd-poweroff.service
systemctl poweroff
poweroff
如果你想完全禁用 systemd 对电源按钮的处理,你首先必须知道它实际上是登录的,通常会这样做。
HandlePowerKey
中的选项允许/etc/systemd/logind.conf
您禁用它(通过设置为ignore
)。然后你可以让其他程序监听按键。
答案2
这并不是我所希望的解决方案,但这是我最终所做的:
环境
HandlePowerKey=ignore
/etc/systemd/logind.conf 中确实从 systemd 中删除了电源键处理。
之后,您就可以像处理其他按键一样处理电源按钮了。
就我而言,我可以从以下位置获取按键事件
/dev/input/by-path/platform-r_gpio_keys-event
正如这个问题中所描述的从 Linux 输入设备访问按键
我在链接问题中创建了示例程序的修改版本,以等待我的电源键(键码 116),然后运行我的脚本。