У меня есть служба, которая зависит от mysql.service через Requires=
. Это необходимо, поскольку служба аварийно завершает работу, если mysql недоступен.
Выполнение systemctl restart mysql
работает отлично. Сначала он останавливает мою службу, перезапускает mysql и снова запускает мою службу.
Как я могу настроить свой блок, чтобы он снова запускался, если я запускаю systemctl stop mysql && systemctl start mysql
?
Это особенно проблема при автоматическом обновлении mysql в Debian, поскольку процесс обновления использует stop
/start
и нет restart
.
Ясно, что вчера я плохо читал. Кажется, вашу проблему легко решить, добавив mysql.service
к вашим услугам WantedBy
под [Install]
раздел.
то после повторного включения службы ее следует запускать всякий раз, когда mysql.service
запущен, пока ваш сервис включен
результат выглядит так:
[Unit]
Requires=mysql.service
After=mysql.service
[Install]
WantedBy=multi-user.target mysql.service
Я не знаю, можно ли настроить ваше устройство так, как вы хотите.
Однако я решил аналогичные проблемы, установив файлы systemd для изменения внешнего модуля, в вашем случае 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 предназначен для поставщиков, маловероятно, что в любом из этих мест следует использовать drop-ins.)