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

我已经安装了 MySQL NDB 集群。 在收集节点之间同步数据源大约需要 2 - 3 分钟。 只要同步完成,我就可以启动一个名为 heartbeat 的附加应用程序。 因此,在我的 shell 脚本中,我打算定期检查 ndbd 解决方案的时间表。 一旦这个解决方案可用,我需要在 5 分钟内启动心跳应用程序。 你能帮我写手稿吗?

1
2022-06-07 14:36:28
资源 分享
答案: 2

您也可以尝试使用开发的“等待”bash - in 命令。

来自“男人狂欢”

等待 [n]

等待定义的进程并返回其终止状态。 n 可能是过程 ID 或任务要求; 如果提供了任务规范,则等待该工作管道中的所有进程。 如果未提供 n,则等待所有当前活动的年轻进程,并且返回状态为 no。 如果 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
2022-06-08 21:37:34
资源

我要做的是让 ndb 脚本再执行一个脚本,这样它就不会等待 5 分钟结束,也不会从一开始就阻止其他解决方案。

## whatever starts ndb
exec heartbeat_startup_script

我在这里休息了 300(秒),创建你指定的 5 分钟,但检查 ndb 同步是否完成会更好。

##heartbeat_startup_script
sleep 300
heartbeat
0
2022-06-07 14:50:51
资源