按下电源按钮时运行脚本

按下电源按钮时运行脚本

当我按下电源按钮时,我想运行一个脚本。为了便于理解,假设是 file.sh。因此,当我按下电源按钮时,我想运行 file.sh,而且只运行 file.sh。

我发现的大多数解决方案都涉及编辑/etc/acpi/powerbtn.sh,但该文件在我的系统中不存在。(我正在运行 Ubuntu 19.04)我尝试创建它并用标准内容填充它,但没有成功。我也尝试用 监听按键acpi_listen,但按下按键时什么也没发生,所以我不知道是我做错了还是什么。我尝试使用xev,它确实拾取了按键事件,但当我按下电源按钮时什么也没有记录。

有人知道如何做到这一点,或者我做错了什么?

PS 我应该提一下,我更喜欢可以在命令行上完成的解决方案,最好是不需要任何第三方软件的解决方案。谢谢。


类似的问题,但没有解决方案:

https://askubuntu.com/questions/473693/run-a-script-when-power-button-is-pushed

基本上寻找他们在这里所做的事情的 Linux 等效版本:

https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown


编辑:这是我从系统日志中获得的信息:

Feb 9 13:01:01 joe-Aspire-E5-576G gnome-session-binary[1624]: Entering running state

这是我的事件文件:

event=button/power action=/home/ragnvaldr/Desktop/test/sc.sh `

答案1

您的问题已在例子部分man acpid。我会适应您的需求。

  • 创建root一个名为的文件/etc/acpi/events/power,内容如下:
event=button/power
action=/usr/bin/logger "ACPI_POWER_BTTN_TEST: %e"
  • 然后运行service acpid restart

  • syslog像这样尾随文件/usr/bin/tail -f /var/log/syslog

  • 按下电源按钮即可查看测试消息syslog

  • 适当更改文件action=中的行power以指向您的自定义脚本。

故障排除:

  1. 重新启动后,使用命令acpid检查是否真的在运行。acpidpidof acpid

  2. 你的脚本是否按预期工作?在脚本中使用命令的完整路径名。不是假设 的任意值PATH

  3. 在上面的例子中,我使用命令/usr/bin/logger作为一种简单的方法来在某处记录某些内容(/var/log/syslog)。或者,您可以将某些内容写入下面的文件/tmp以进行测试。

  4. 据@nathan 报告,某些窗口管理器可能还会捕获电源按钮。确保/etc/systemd/logind.conf有行可能会有所帮助HandlePowerKey=ignore,这样systemd-logind.service就会忽略电源按钮。

答案2

基本上寻找他们在这里所做的事情的 Linux 等效版本:https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown

如果这是您想要做的,那么您可以在系统关闭(或休眠或进入睡眠状态)时使用systemd基础设施

相关内容