Как я могу запустить команду, если отключен служебный модуль 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 можно использовать, чтобы попытаться очистить частичный успех.

  • Есть ли причина уйти от fstab в системе systemd?
  • Как создать .deb, который имеет дело с различными системами инициализации
  • Запуск пользовательского таймера systemd, когда у них нет открытого сеанса
  • Таймер для приостановки, аналогичный утилите отключения
  • Почему моя команда systemctl v208 не поддерживает некоторые функции?
  • Как я могу заставить свои пользовательские службы ждать, пока сеть не будет в сети?
  • Смонтируйте и скопируйте / var в хранилище экземпляров EC2 во время первой загрузки
  • Запуск службы один раз в неделю, а также при загрузке
  • Группирование системных служб
  • Именование сетей в Arch Linux
  • Установка NFS через systemd в Centos 7
  • Interesting Posts

    Изменение каталога установки по умолчанию?

    Настройка тестовой пропускной способности с двумя локальными интерфейсами Ethernet

    Установка виртуальной машины на виртуальной машине

    Безопасное хранение необработанных изображений на USB-накопителях

    Что может привести к чрезмерному замедлению кэширования кэша в большом кластере?

    Arch Linux Kde – уменьшить количество панельных приложений

    Как я могу заставить свой Wi-Fi подключиться к каналу G-диапазона?

    Как перенести все страницы памяти процесса с одного узла NUMA на другой узел NUMA?

    tmux new-window – дождитесь окончания сеанса?

    git развертывание с использованием sudo nopasswd

    Как обновить приложение до последней версии с помощью yum в Fedora?

    Каков лучший дистрибутив linux для виртуального бокса? preff. небольшая прямая загрузка и большой список пакетов

    Копировать команду с аргументами командной строки

    Менеджеры пакетов без корневого каталога

    Почему / как «время безотказной работы» показывает загрузку CPU> 1?

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