我在机器A上运行一个脚本,需要触发机器B的重新启动,然后等待机器B完全备份。 这实际上需要连续多次发生,所以把等待时间降到最低是很重要的。 (这是一个不同的启动参数值的自动化testing。)
这些机器正在运行Linux,所以我认为基本的方法应该是在机器B上安装一个晚运行(例如优先级为99)的初始化脚本,它以某种方式向机器A发送消息。我打算使用update-rc.d ${script_name} start 99 S .来安装脚本update-rc.d ${script_name} start 99 S . 。 但是,我卡在哪里是如何发送和等待消息。
我认为必须有一些消息队列或协调器服务,我可以开箱即用脚本。 例如, Zookeeper应该是有能力的,但是如何编写脚本却是非常不明显的。 我可以写一个小客户端/服务器程序来做到这一点(大概使用TCP套接字),但我希望有一个更简单的解决scheme。 机器B上的设置需要完全由机器A上的脚本完成,因此理想情况下避免编译或安装脚本语言模块等步骤。
感谢您的任何build议!
你也可以使用netcat或socat来启动一个简单的networking监听程序,这个监听程序的启动较晚,而另一个主机则会重复检查。 解决这个问题的另一种方法是通过邮件从rc.local发送一个自动“我活着”消息到另一台机器,并用.forward或.qmail文件中的脚本来提取。
听起来像你想看看心跳守护进程 。 这正是它所做的:监控同行。
难道你不能只是定期ping,然后检查ping的退出代码?
如果ping成功,则退出代码应为0:
$ ping -c 1 -t 1 1.2.3.4 ... $ echo $? 0
如果不成功,将会是2:
$ ping -c 1 -t 1 5.6.7.8 ... $ echo $? 2