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