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

  • Suspend больше не работает после обновления до xubuntu 15.10
  • Как вы сообщаете системе, что цель удовлетворена одним из любых требований?
  • Проблемы с нерегулярным выпуском Systemd
  • Как не регистрировать некоторые сообщения в журнале systemd
  • systemD Loaded vs. Enabled
  • перезапустить службу после установки устройства
  • Как отлаживать systemd «init» во время загрузки?
  • Запуск службы до входа пользователя в систему
  • Как удалить (не отключить / маску) блок в Systemd?
  • Linux: Почему init и systemd используют так много операций ввода-вывода?
  • Показать пользовательское загрузочное сообщение
  • Как запустить службу systemd только после запуска mysql?
  • Interesting Posts

    извлечь диск по имени пути / тома

    Разрешить FTP только через VPN

    Как подключить stdout к файлу, если текущая команда уже передается через gzip

    TPM (идентификатор устройства 0x0, rev-id 78)

    Пользовательское действие для открытия экземпляра программы для каждой выбранной папки?

    Выполнение «вилочной бомбы» безопасно

    Использование балансировки нагрузки вместо Apache для дросселирования транзакций с определенных IP-адресов

    Изменение с помощью команды iptables не отражается в выводе команды netstat

    Добавить файл данных 2 в файл 1 без заголовка

    Есть ли разница в использовании ресурсов / потребностях между версиями Ubuntu и Debian Linux Mint (под тем же DE)?

    Найдите список всех файлов с шаблоном даты, чтобы снести их вместе.

    Как реагировать в подсказке с использованием канала exec JSch

    Как установить время в Centos, чтобы сброс ОС не возвращался к значению по умолчанию?

    подсветка синтаксиса emacs не работает на моем SSH-клиенте

    Может ли awesome-wm передать нажатие клавиши в активное окно при определенных условиях?

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