在另一项服务启动后执行服务

我已经安装了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