调用 ACPI/D-bus 运行 ruby​​ 脚本

Posted

技术标签:

【中文标题】调用 ACPI/D-bus 运行 ruby​​ 脚本【英文标题】:Invoke ACPI/D-bus to run ruby script 【发布时间】:2014-10-01 18:33:21 【问题描述】:

如果后台进程检测到我的笔记本电脑盖合上,我正在创建一个个人应用程序来向我的手机发送短信。

我研究过,有几种方法可以做到这一点:

    ACPI - 它侦听事件(笔记本电脑盖关闭)并运行 bash 脚本。但是我不确定如何让它运行一个 ruby​​ 脚本。

    D-bus - 允许桌面应用程序和内核之间进行通信,但我必须先创建一个桌面应用程序,这有点矫枉过正。

我是系统编程的新手,这个项目只是测试系统编程水域的一种方式。因此,我上面的描述可能不准确。

如果你们对如何实现这个应用程序的功能有任何想法 - 当笔记本电脑盖合上时向指定的电话号码发送短信 - 我全神贯注。

【问题讨论】:

【参考方案1】:

您可以在 ACPI 事件上运行 ruby​​ 脚本。

首先使用acpi_listen 找出关闭盖子的事件是什么。

就我而言,它看起来像这样:

button/lid LID close

然后你必须创建一个 ACPI 事件处理程序(用你喜欢的文本编辑器替换 vim): sudo vim /etc/acpi/events/laptop_lid

event=button/lid LID close
action=/etc/acpi/your_ruby_script.rb

接下来,将您的脚本放入/etc/acpi/ 并使其可执行:

sudo cp /path/to/your_ruby_script.rb /etc/acpi/your_ruby_script.rb
sudo chmod +x /etc/acpi/your_ruby_script.rb

最后只需重新启动 ACPI 守护程序。这取决于发行版,但在基于新贵的发行版上是 sudo service acpid restart,在基于 systemd 的发行版上是 sudo systemctl restart acpid.service

【讨论】:

以上是关于调用 ACPI/D-bus 运行 ruby​​ 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby 脚本中运行 Rake 任务?

如何在 heroku 上运行带有事件机侦听器的 ruby​​ 脚本?

ruby

在进行数据库调用的线程中使用 ruby​​ 超时

Ruby 测试期望运行一个命令

ruby 超时和系统命令