我如何知道系统是否已启动?

时间:2008-10-11 14:11:45

标签: perl operating-system boot uptime

我正在编写一个通过网络启动系统的脚本。然后我需要在另一台主机上运行一些命令。我如何知道系统是否已启动?

我的编程语言是Perl,目标主机是RHEL5。

是否有任何内核中断或网络启动信息表明系统已启动且操作系统已加载?

[在另一种情况下]我也想知道以防我是否只是手动打开我的机器。什么时候才能确切地说已打开电源。何时OS应该完全启动以进行网络相关操作,例如在那里执行网络命令。如果系统在DHCP上,那么远程系统如何搜索这台机器怎么办[我猜它可以通过mac地址。但如果我错了]。

如果我错过了任何信息,请随时问我。如果您有任何建议可以使任务更容易,请表明他们:)

感谢名单 imkin

4 个答案:

答案 0 :(得分:12)

好吧,我会说系统在它可以执行你的请求时启动了。也就是说,sshd守护程序正在运行。这是为了你的目的足够启动(我假设 - 替换你真正需要的任何守护进程)。

所以,我发送开机信号,每隔15-30秒检查一次,看看能不能连接。如果我无法在合理的时间内连接该机器(2分钟或5分钟或其他),那么我会向IT支持团队发送警报。好吧,我先把它发给自己,只有在我调查了几次失败之后才发现它们都是合法的,我会开始直接发送给它。

DHCP是一个不同的问题。你必须开始学习广播,或者在启动过程中在该机器上有一个守护进程“回家”以注册其当前的IP地址。每次DHCP续订改变其IP地址时,它都必须“回家”。这显然更复杂。尽可能避免在这样的服务器上使用DHCP。

答案 1 :(得分:9)

在重新启动计算机上,您可以使用特殊@reboot断言在crontab中安装脚本(请参阅man 5 crontab)。该脚本可以向另一台机器发送某种通知,通知它现在已经启动。

答案 2 :(得分:7)

我认为检查sshd听起来是个不错的方法。

关于DHCP问题:如果另一台计算机在同一子网上,您可以使用Net::ARP通过MAC地址查找。

答案 3 :(得分:3)

如何将脚本添加到远程计算机上,该计算机在启动时运行,让它在准备就绪时告诉您。