我已经编写了一个服务,该服务仅在实例启动时启动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服务完全启动之前执行。
答案 0 :(得分:1)
这可能会帮助您:
systemctl为此具有一个is-active子命令:
systemctl is-active --quiet service
如果服务处于活动状态,将退出,状态为零,否则为非零,使其非常适合脚本:
systemctl is-active --quiet service && echo Service is running
如果省略--quiet,也会将当前状态输出到其标准输出。
在shell脚本中进行无限循环,并在循环内使用上述命令检查MySQL是否正在运行。
一旦发现MySQL正在运行,就启动服务并退出循环或脚本。
答案 1 :(得分:0)
请浏览this存储库并查看wait-fot-it.sh
您必须在其受尊敬的脚本文件中添加wait-for-it.sh脚本文件,并将./wait-for-it.sh mysql:3306 --timeout=30
放在服务脚本文件的启动逻辑之前。希望对您有所帮助。