我已经安装了 MySQL NDB 集群。在集群节点之间同步数据库大约需要 2-3 分钟。同步完成后,我就可以启动另一个名为 heartbeat 的应用程序。因此,在我的 shell 脚本中,我想随时检查 ndbd 服务的可用性。一旦此服务可用,我需要在五分钟内启动 heartbeat 应用程序。你能帮我写一下脚本吗?
答案1
您也可以尝试使用“wait”bash内置命令。
来自“man bash”
等待 [n]
等待指定的进程并返回其终止状态。n 可以是进程 ID 或作业规范;如果给出了作业规范,则等待该作业管道中的所有进程。如果没有给出 n,则等待所有当前活动的子进程,返回状态为零。如果 n 指定不存在的进程或作业,则返回状态为 127。否则,返回状态是等待的最后一个进程或作业的退出状态。
你的脚本可能看起来像这样:
# send to background
./ndb_startup_script &
# wait on pid of ndb_startup_script
wait $!
if [ $? -eq 0 ] # assuming 0 is ret code for successful run
then
./heartbeat_startup_script
else
# extra stuff to handle error
fi
答案2
我想要的是让 ndb 脚本执行另一个脚本,这样它就不会等待 5 分钟完成并阻止其他服务启动。
## whatever starts ndb
exec heartbeat_startup_script
我在这里设置了睡眠 300(秒),因为你指定了 5 分钟,但检查 ndb 同步是否完成会更好。
##heartbeat_startup_script
sleep 300
heartbeat