我在机器 A 上运行了一个脚本,该脚本需要触发机器 B 的重新启动,然后等待机器 B 完全恢复。这实际上需要连续发生多次,因此将等待时间保持在最短是相当重要的。(这是对不同启动参数值的自动测试。)
这些机器运行的是 Linux,所以我认为基本方法应该是在机器 B 上安装一个后期运行(例如优先级 99)的 init 脚本,该脚本以某种方式向机器 A 发送消息。我计划使用 安装脚本update-rc.d ${script_name} start 99 S .
。但是,我遇到的问题是如何发送和等待消息。
我认为一定存在某种消息队列或协调器服务,我可以编写脚本直接使用。例如,Zookeeper应该能够实现,但编写脚本却出奇地不明显。我可以编写一个小型客户端/服务器程序来执行此操作(大概使用 TCP 套接字),但我希望有一个更简单的解决方案。机器 B 上的设置需要完全由机器 A 上的脚本完成,因此最好避免编译或安装脚本语言模块等步骤。
谢谢您的任何建议!
答案1
您还可以使用 netcat 或 socat 制作一个简单的网络侦听器,该侦听器启动较晚,而另一台主机会反复检查。解决此问题的另一种方法是通过邮件从 rc.local 向另一台机器发送自动“我还活着”消息,然后使用 .forward 或 .qmail 文件中的脚本接收该消息。
答案2
听起来你想看看心跳守护进程。这正是它的目的:监控同侪群体。
答案3
你不能定期 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