如何更改电源按钮关闭操作以在 systemd 下运行脚本

如何更改电源按钮关闭操作以在 systemd 下运行脚本

如何更改 debian 10 systemd 下的电源按钮关闭操作以运行自定义脚本而不是关闭系统?

当这个问题由 acpi 处理时,人们可以编辑 /etc/acpi 中的脚本。到目前为止,我发现的唯一建议是用我的脚本替换各种与电源相关的二进制文件。

有没有办法在不替换二进制文件的情况下做到这一点?

答案1

这取决于你想做什么。

  • 如果您只需要在运行某些操作时暂时阻止断电,请参阅systemd-inhibit。您还可以像这样阻止睡眠、暂停等。您还可以暂时(只要您的程序正在运行)告诉 systemd 忽略电源按钮,以便让其他程序对其进行操作。

  • 如果您只想在关闭之前运行一些额外的代码,那么您可以通过 启动您的服务poweroff.target。您可能还需要考虑shutdown.targetreboot.target。 (我认为,如果您想完全更改电源按钮的功能,您也可以将 更改poweroff.target为不拉入- 但要小心类似的事情,也请经历这一过程)。systemd-poweroff.servicesystemctl poweroffpoweroff

  • 如果你想完全禁用 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),然后运行我的脚本。

相关内容