Вызвать шину ACPI/D для запуска сценария ruby
Я создаю личное приложение для отправки SMS на мой телефон, если фоновый процесс обнаружил закрытие крышки моего ноутбука.
Я исследовал, и есть несколько способов сделать это:
ACPI - он прослушивает событие (закрытие крышки ноутбука) и запускает скрипт bash. Однако я не уверен, как заставить его запускать скрипт ruby.
D-bus - обеспечивает связь между настольным приложением и ядром, но сначала мне нужно будет создать настольное приложение, что немного излишне.
Я новичок в системном программировании, этот проект - просто способ проверить основы системного программирования. Следовательно, мое описание выше может быть неточным.
Если у вас, ребята, есть идеи, как добиться функциональности этого приложения - отправка SMS-сообщения на указанный номер телефона, когда крышка ноутбука закрыта - у меня все уши.
1 ответ
Вы можете запустить скрипт ruby для события ACPI.
Первое использование 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
и на системных дистрибутивах это sudo systemctl restart acpid.service
,