systemctl After не работает

У меня есть специальный сервис, который мне нужно запустить после того, как MySQL появится в сети. Я пытаюсь использовать systemd / systemctl для запуска службы при загрузке. Я поставил After=network.target mysqld.service в моем пользовательском файле конфигурации. Проблема, по-видимому, заключается в том, что systemctl полагает, что mysql завершил запуск, и, следовательно, приступает к запуску моей пользовательской службы, но пользовательская служба не может подключиться к базе данных после просмотра журнала. Проверка меток времени в журнале mysql показывает, что моя пользовательская служба запускается до того, как mysql готов к запуску. Я просмотрел документацию по systemctl, и, похоже, не было никаких "дождаться начала тайм-аута" или "дождаться, пока сокет прослушивает соединения". Как я могу убедиться, что mysql готов перед запуском моей пользовательской службы?

1 ответ

В файлах systemd.service есть опция, которая явно проверяет наличие сокета.

В документации по systemd Леннарт Петтеринг очень подробно описывает, что большинству сервисов не нужен фактический запуск, а просто сокет для привязки.

Systemd может создать эти сокеты и запускает mysql при первом доступе! Это одна из главных причин создания systemd.

http://0pointer.de/blog/projects/socket-activation.html

Другие вопросы по тегам