我已经安装了MySQL NDB集群。 它需要大约2-3分钟才能在集群节点之间同步数据库。 一旦同步完成,我可以启动另一个名为heartbeat的应用程序。 因此,在我的shell脚本中,我想一直检查ndbd服务的可用性。 一旦这个服务可用,我需要在五分钟内启动心跳应用程序。 你能帮我写剧本吗?
你也可以尝试使用“等待”bash内置命令。
从“男子气概”
等待[n]
等待指定的进程并返回其终止状态。 n可以是进程ID或工作规范; 如果给出了工作规范,则等待该作业pipe道中的所有进程。 如果没有给出n,则等待所有当前活动的subprocess,并且返回状态为零。 如果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
我想要的是ndb脚本执行另一个脚本,以便它不等待5分钟完成并阻止其他服务启动。
## whatever starts ndb exec heartbeat_startup_script
我在这里放了一个300(秒)的睡眠,因为你已经指定了5分钟,但是检查ndb同步是否会更好。
##heartbeat_startup_script sleep 300 heartbeat