запускать службу systemd при запуске требований

У меня есть служба, которая зависит от mysql.service через Requires = . Это необходимо, поскольку служба дает сбой, если mysql недоступен.

Выполнение systemctl restart mysql работает нормально. Сначала он останавливает мою службу, перезапускает mysql и снова запускает мою службу.

Как мне настроить свой модуль, чтобы он также запускался снова, если я запускаю systemctl stop mysql && systemctl start mysql ?

Это особенно проблема во время автоматического обновления mysql в debian, потому что процесс обновления использует stop / start , а не restart .

6
задан 29 April 2016 в 13:57
1 ответ

новый и лучший ответ

Очевидно, что я вчера плохо читал. Похоже, вашу проблему можно легко решить, добавив mysql.service в свой сервис WantedBy в разделе [Install].

затем, после того, как вы включите свой сервис, он должен быть запущен всякий раз, когда mysql. service запускается, пока ваш сервис включен

, результат выглядит следующим образом:

[Unit]
Requires=mysql.service
After=mysql.service

[Install]
WantedBy=multi-user.target mysql.service

мой старый ответ для справки:

Я не знаю, возможно ли настроить ваше устройство так, как вы хотите.

Я, однако, решил подобные проблемы установкой systemd drop-in-файлов для модификации постороннего устройства, в вашем случае mysql. service.

предполагая, что ваше устройство является foo.service, вы можете создать файл .conf в файле
/etc/systemd/system/mysql.service.d/ со следующим содержимым:

[Unit]
Wants=foo.service
Before=foo.service

это приведет к тому, что systemd попробует запустить foo. service после каждого запуска mysql.service

для полноты, а также для цитирования systemd документация:

В дополнение к /etc/systemd/system, выпадающие ".conf" файлы для системных сервисов могут быть размещены в каталогах /usr/lib/systemd/system или /run/systemd/system. Выпадающие файлы в /etc имеют приоритет над файлами в /run, которые, в свою очередь, имеют приоритет над файлами в /usr/lib. Файлы в любом из этих каталогов имеют приоритет над файлами устройств, где бы они ни находились. (Конечно, так как /run - временный, а /usr/lib - для поставщиков, вряд ли можно использовать дроп-ин в любом из этих мест.)

4
ответ дан 3 December 2019 в 00:35

Теги

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