Как заставить службу ждать, пока служба MySQL запустится при загрузке? - PullRequest
4 голосов
/ 23 мая 2019

Я написал службу, которая должна запускаться только после запуска службы MySQL при загрузке экземпляра.

Операционная система: Centos 6.10.

Как заставить службу ждать, пока служба MySQL полностью запустится при загрузке?

Я попытался создать службу запуска в /etc/init.d скрипт запуска службы:

# chkconfig: 345 99 01
# description: service startup script
### BEGIN INIT INFO
# Required-Start: mysqld
### END INIT INFO
cd /path_of_server
./start.sh

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

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Это может помочь вам:

systemctl имеет подкоманду is-active для этого:

systemctl is-active --quiet service

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

systemctl is-active --quiet service && echo Service is running

Если вы опустите --quiet, он также выведет текущее состояние на стандартный вывод.

Создайте бесконечный цикл в сценарии оболочки и проверьте, работает ли MySQL с помощью вышеуказанной команды внутри цикла.

Как только вы обнаружите, что MySQL работает, запустите службу и выйдите из цикла или сценария.

0 голосов
/ 24 мая 2019

Пожалуйста, пройдите через этот репозиторий и посмотрите на wait-fot-it.sh

Вы должны добавить скрипт wait-for-it.shфайл с вашим уважаемым файлом сценария и поместите ./wait-for-it.sh mysql:3306 --timeout=30 перед запуском логики файла служебного сценария.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...