Почему acpi_listen обнаруживает событие, а acpid нет?

Вопрос или проблема

У меня есть странное несоответствие между acpi_listen и journalctl -u acpid: Когда я запускаю первое и закрываю, а затем открываю крышку ноутбука, я получаю следующий вывод:

button/lid LID close
button/lid LID open

Тем не менее, в журнале acpid абсолютно нет активности.

Это проблема для меня, потому что я пытаюсь выполнить скрипт, когда крышка закрыта / открыта. Для этой цели я создал файл /etc/acpi/events/lidconf с содержимым

# запуск скрипта при открытии/закрытии крышки
event=button/lid.*
action=/etc/acpi/actions/lid.sh

Файл под /etc/acpi/actions/lid.sh является исполняемым и содержит следующее:

#!/bin/bash

mkdir /home/<мой-пользователь>/LidEvent

Это, очевидно, просто тестовый скрипт, но он делает именно то, что я ожидаю, когда я запускаю его вручную. К сожалению, он не срабатывает acpid, хотя события acpi для открытия / закрытия явно существуют. Что может пойти не так?

Моя система:

  • Операционная система: Bazzite 41
  • Версия KDE Plasma: 6.2.4
  • Версия KDE Frameworks: 6.8.0
  • Версия Qt: 6.8.0
  • Версия ядра: 6.11.10-304.bazzite.fc41.x86_64 (64-бит)
  • Графическая платформа: Wayland
  • Процессоры: 16 × AMD Ryzen 7 8840U с графикой Radeon 780M
  • Память: 46.8 ГиБ ОЗУ
  • Графический процессор: AMD Radeon Graphics
  • Производитель: GPD
  • Наименование продукта: G1619-04
  • Версия системы: Ver.1.0

Ответ или решение

Вопрос, который вы подняли, о том, почему acpi_listen фиксирует события, а acpid не реагирует на них, может быть связан с несколькими факторами. Давайте рассмотрим возможные причины этой проблемы и предложим решения.

1. Проверка конфигурации acpid

Первое, что следует проверить, это правильность настройки вашего файла событий /etc/acpi/events/lidconf. Убедитесь, что он правильно создан и содержит необходимые события. В вашем случае:

# run a script on lid open/close events
event=button/lid.*
action=/etc/acpi/actions/lid.sh

Эта конфигурация выглядит корректной, однако, возможно, стоит уточнить, что acpid действительно читает этот файл. Для этого можно перезапустить службу acpid:

sudo systemctl restart acpid

После этого проверьте статус службы:

systemctl status acpid

Здесь вы можете увидеть, возникли ли какие-либо ошибки при загрузке конфигурации.

2. Проверьте логи acpid

Далее, хотя вы заметили, что логи acpid не отображают никакой активности, стоит удостовериться, что ведение логов на самом деле активно. Вы можете просмотреть логи с помощью следующей команды:

journalctl -u acpid -f

Это будет показывать новые записи в реальном времени. Закройте и откройте крышку, чтобы увидеть, появляются ли новые записи в логе.

3. Права доступа к скрипту lid.sh

Убедитесь, что ваш скрипт /etc/acpi/actions/lid.sh имеет необходимые права доступа для выполнения. Исполнительные права можно установить командой:

sudo chmod +x /etc/acpi/actions/lid.sh

Также проверьте, что у скрипта есть права на создание каталога в указанном пути. Если выбрана папка /home/<my-user>/LidEvent, убедитесь, что скрипт запускается от имени нужного пользователя, который имеет права на запись в домашнюю директорию.

4. Проверка системного окружения

Иногда проблема может заключаться в изменениях в окружении исполнения скрипта, когда его запускает acpid. Попробуйте изменить ваш скрипт, добавив в него строки для записи в лог-файл, чтобы проверить его исполнение:

#!/bin/bash

echo "$(date): Лид открыт или закрыт" >> /home/<my-user>/LidEvent/event.log
mkdir /home/<my-user>/LidEvent

Это может помочь вам диагностировать, запускается ли скрипт и выполняет ли он команды.

5. Конфликт с другими процессами

Наконец, стоит проверить наличие других процессов или демонов, которые могут конфликтовать с acpid, таких как upower или другие системы управления энергопотреблением. Попробуйте временно отключить их и посмотреть, изменится ли поведение acpid.

Заключение

Проблема, с которой вы столкнулись, может быть довольно сложной, так как она может быть связана как с конфигурацией acpid, так и с особенностями вашего дистрибутива. Следуя вышеупомянутым шагам и проверяя каждую из возможных проблем, вы сможете выявить причину, по которой acpi_listen фиксирует события, но acpid не реагирует на них. Если решение не будет найдено, вы можете рассмотреть необходимость обращения к сообществу пользователей вашей ОС или к официальной поддержке для более глубокого анализа проблемы.

Оцените материал
Добавить комментарий

Капча загружается...