Как изменить действие кнопки питания при выключении для запуска скрипта в systemd

Просто используйте команду find.

find. -type d ! \( -name "$(date -d "-7 days" +%Y%m%d)" \
    $(eval printf "%s" "\" -o -name \
   \$(date -d -"{6..0}"days +%Y%m%d)\"") -o -name. \) -exec rm -rf -- '{}' +
  • Только д истори-type d
  • Только директора, чьи имена старше 7 дней.
  • Удалить этот каталог и его содержимое rm -rf -- '{}'сразу+
1
05.12.2019, 23:40
2 ответа

Это зависит от того, что вы хотите сделать.

  • Если вам просто нужно временно заблокировать отключение питания во время выполнения какой-либо операции, см. systemd-inhibit. Вы также можете заблокировать сон, приостановить и т. Д. Вот так. Вы также можете временно (пока ваша программа работает )сказать systemd игнорировать кнопку питания, чтобы вместо этого какая-то другая программа воздействовала на нее.

  • Если вы просто хотите запустить дополнительный код перед завершением работы, вы можете запустить службу с помощью poweroff.target. Вы также можете рассмотреть shutdown.targetи reboot.target. (Я думаю, вы также можете изменить poweroff.target, чтобы не втягивать systemd-poweroff.service, если вы хотите полностью изменить то, что делает кнопка питания, но будьте осторожны, такие вещи, как systemctl poweroffи poweroff, тоже проходят через это ).

  • Если вы хотите полностью отключить обработку systemd кнопки питания, вам сначала нужно знать, что на самом деле это делает logind. Параметр HandlePowerKeyв /etc/systemd/logind.confпозволяет отключить его (, установив значениеignore). Затем вы можете заставить другую программу прослушивать ключи.

3
27.01.2020, 23:29

Не совсем то решение, на которое я надеялся, но вот что я в итоге сделал:

Настройка

HandlePowerKey=ignore

в /etc/systemd/logind.conf удалена обработка ключа питания из systemd.

После этого вам остается обращаться с кнопкой питания, как с любой другой клавишей.

В моем случае я могу получить событие нажатия клавиши из

/dev/input/by-path/platform-r_gpio_keys-event

как описано в этом вопросе Доступ к ключам с устройства ввода Linux

Я создал модифицированную версию примера программы в связанном вопросе, чтобы дождаться моего ключа питания, который имеет код 116, а затем запустить мой сценарий.

3
27.01.2020, 23:29

Теги

Похожие вопросы