Как я могу запустить команду, если отключен служебный модуль systemd?

У меня есть следующий системный модуль systemd для установки порогов батареи моего ноутбука:

[Unit] Description=Set Battery Charge Thresholds [Service] Type=oneshot ExecStart=/usr/bin/tpacpi-bat -s --start 1 30 ExecStart=/usr/bin/tpacpi-bat -s --stop 1 85 RemainAfterExit=yes [Install] WantedBy=multi-user.target 

Я бы хотел, чтобы это был способ запуска команд при отключении сервисного модуля (так что я могу удобно установить пороговые значения обратно по умолчанию). Это возможно?

One Solution collect form web for “Как я могу запустить команду, если отключен служебный модуль systemd?”

Взгляните на ExecStop или ExecStopPost

ExecStop

Команды, выполняемые для остановки службы, запускаются через ExecStart =. Этот аргумент принимает несколько команд, следуя той же схеме, что и для ExecStart = выше. Использование этого параметра является необязательным. После запуска команд, сконфигурированных в этой опции, все процессы, оставшиеся для службы, завершаются в соответствии с настройкой KillMode = (см. Systemd.kill (5)). Если этот параметр не указан, процесс прекращается путем отправки сигнала, указанного в KillSignal = при запросе остановки службы. Поддерживается подстановка переменных спецификатора и среды (включая $ MAINPID, см. Выше).

Рекомендуется использовать этот параметр для команд, которые взаимодействуют с сервисом, запрашивающим чистое завершение. Когда команды, указанные с этой опцией, выполняются, следует предположить, что служба все еще полностью готова и может корректно реагировать на все команды. Для посмертных шагов очистки используйте ExecStopPost = вместо этого.

ExecStopPost

Дополнительные команды, которые выполняются после остановки службы. Сюда относятся случаи, когда были использованы команды, сконфигурированные в ExecStop =, где у службы нет ExecStop =, или где служба неожиданно завершилась. Этот аргумент принимает несколько команд, следуя той же схеме, что и для ExecStart =. Использование этих параметров является необязательным. Поддерживается подстановка переменных спецификатора и среды. Обратите внимание, что – в отличие от ExecStop = – команды, указанные этим параметром, вызываются, когда служба не запускается правильно и снова выключается.

Рекомендуется использовать этот параметр для операций очистки, которые должны выполняться, даже если служба не запускалась правильно. Команды, настроенные с этим параметром, должны иметь возможность работать, даже если служба не запускалась на полпути и оставила не полностью инициализированные данные. Поскольку процессы службы уже завершены, когда выполняются команды, указанные с этим параметром, они не должны пытаться связываться с ними.

Обратите внимание, что все команды, настроенные с этим параметром, вызывается с помощью кода результата службы, а также с кодом завершения и статусом основного процесса, установленным в переменных среды $ SERVICE_RESULT, $ EXIT_CODE и $ EXIT_STATUS, см. Systemd.exec (5) для деталей.

Оба они могут использоваться для запуска команд, когда служба остановлена.

Основные различия между ними:

  • ExecStop запускается, пока основной процесс все еще запущен, и будет работать только тогда, когда служба будет остановлена ​​после нормальной работы (что означает, что все службы ExecStart и ExecStartPre должны преуспеть, и все Conditions... также должны пройти.

  • ExecStopPost работает, даже если «служба неожиданно завершена», которая охватывает сбои. Самое большое преимущество этого – когда у вас несколько ExecStart s, если один из них преуспевает, а другой не работает, ExecStopPost можно использовать, чтобы попытаться очистить частичный успех.

  • Когда Samba работал в manjoro linux, демону не удалось запустить: Samba обнаружила неправильно сконфигурированную «роль сервера» и вышла.
  • Где разместить созданные пользователем файлы systemd unit
  • Может запустить пользовательский сервис systemd, не может его включить
  • Как создать файл systemd для установки тома при загрузке?
  • Предотвращение всего процесса для печати на консоли ожидает, что процесс мастера настройки
  • Как установить Airflow в файлы systemd в ubuntu 16
  • systemd mount 'rootfs' в соответствии с '/ proc / cmdline'
  • Странная неправильная кодировка, отображаемая при загрузке systemd
  • Установите WorkDirectory, используя переменную
  • Служба Systemd Python не отправляет весь вывод в syslog
  • Как не регистрировать некоторые сообщения в журнале systemd
  • Interesting Posts

    privoxy не может выполнять никаких дополнительных подключений

    Как изменить разрешение и владельца группы файла одновременно

    Как установить open-vm-toolbox на Kali Linux?

    Как настроить lynx для передачи изображений в xloadimage, xv или zvg?

    вызов функции Bash из определения псевдонима

    Как запустить скрипт при разблокировке?

    Как удалить повторяющиеся строки, сохраняя порядок и игнорируя регистр?

    Я ищу бесплатный пакет для базы данных для Ubuntu

    Использование exec и tee для перенаправления журналов на stdout и файл журнала в одно и то же время

    Использование alot MUA с nottoomuch-адресами

    mdadm; ранее работала; после «сбоя», не может присоединиться к массиву из-за размера диска

    overcommit_memory и overcommit_ration

    Linux не видит ни одного из моих разделов. Резервная таблица GPT не находится в конце диска

    Ethernet работает только при загрузке ПК с подключенным кабелем

    Жесткая привязка файлов других пользователей

    Linux и Unix - лучшая ОС в мире.