【问题标题】:How do I know if a system has powered on?我如何知道系统是否已启动?
【发布时间】:2010-09-16 16:25:38
【问题描述】:

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

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

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

[在不同的情况下] 我还想以防万一我只是手动打开我的机器。确切地说是什么时候通电。以及操作系统应该何时完全启动以进行网络相关操作,例如在那里执行网络命令。如果系统在 DHCP 上,远程系统将如何搜索这台机器 [我猜这可能通过 mac 地址。但如果我错了]。

如果我错过了任何信息,请随时问我。如果您有任何建议可以使任务更轻松,请提出:)

谢谢 伊姆金

【问题讨论】:

    标签: perl operating-system boot uptime


    【解决方案1】:

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

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

    DHCP 是一个不同的问题。您必须开始学习广播,或者在启动期间在该机器上安装一个守护进程“回拨”以注册其当前 IP 地址。每次 DHCP 更新更改其 IP 地址时,它都必须“回拨”。这显然更令人费解。尽可能避免在此类服务器计算机上使用 DHCP。

    【讨论】:

    • 为什么 DHCP 会更改 IP 地址? DHCP 只是意味着计算机向网络请求地址 - 这并不意味着地址发生了变化。修复地址的是路由器或对查询的任何回复。所要做的就是告诉路由器给机器一个固定的IP。
    • DHCP 仅可以更改 IP 地址。没有什么说它必须。必须以某种方式处理这个问题——要么专门配置 DHCP 服务器,要么处理 IP 更改。
    • 直接使用IP地址一般不是个好主意。
    【解决方案2】:

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

    【讨论】:

    • 我喜欢这个系统打电话回家的想法。将其设置为启动顺序中的最后一件事(或至少在您关心的服务之后),并且您知道系统可以响应您的后续请求。
    【解决方案3】:

    我认为检查 sshd 听起来是个好方法。

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

    【讨论】:

      【解决方案4】:

      如何将脚本添加到在启动时运行的远程机器,让它告诉你它什么时候准备好。

      【讨论】:

        猜你喜欢
        • 2020-01-08
        • 2012-01-20
        • 2021-08-18
        • 2012-11-01
        • 2021-07-10
        • 1970-01-01
        • 2014-08-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多