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

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

  • systemd, используя 100% моего процессора, если нет, если я запустил его без systemd
  • Объединение tail && journalctl
  • Попытка запуска скрипта python как службы с помощью systemd
  • Периодически выполняемый btrfs-scrub
  • системный таймер каждые 15 минут
  • systemD Loaded vs. Enabled
  • Перезапуск службы systemd при сбое зависимости
  • systemd: как распечатать конфигурацию по умолчанию для службы?
  • 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 можно использовать, чтобы попытаться очистить частичный успех.

    Interesting Posts

    Путь к x86_64 заголовкам ядра Linux

    Что использовать, когда команда «ls» не работает?

    Сумма каждого столбца в файле должна быть гибкой для количества столбцов, которые находятся в файле

    почему lscpu CPU MHz! = dmidecode Текущая скорость

    Предотвращение использования планировщиком определенных ядер на FreeBSD

    grep и добавить его в конец строки

    Установка минимальной скорости указателя без использования GNOME GUI

    Почему bash очищает OLDPWD при запуске дочернего скрипта?

    SSH завершает работу после выхода из сценария bash

    Каков минимальный круглый интервал шифрования, поддерживаемый Linux?

    Создайте ядро ​​на одной машине, установите в другой

    Часто не удается получить доступ к Virtualmin через браузер

    Извлеките только имя службы и номер порта из файла tnsnames.ora

    считывать ввод от пользователя во время цикла, имеющего перенаправление ввода и вывода

    LMDE не загружается непосредственно после установки, но загружается с опции cd «загрузка с локального жесткого диска»,

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