【问题标题】:Ruby: Detect times when Fedora machine is powered-onRuby:检测 Fedora 机器开机的时间
【发布时间】:2011-02-14 21:23:34
【问题描述】:

感觉就像我之前访问过 stackoverflow 100 次。总是找到好的解决方案,但现在我陷入了困境。

我想监控计算机每天运行多长时间。这是用 Ruby 编写的程序的一部分,在 Fedora 机器上运行。

以前我在 Windows 下做过类似的事情,可以使用 WndProc 捕获相关的电源事件。但是,对于 Fedora(或一般的 Linux),我找不到一个很好的钩子来检测开机和关机/挂起/休眠/....

非常感谢任何建议。

谢谢, 杰罗克

编辑:似乎我还不清楚我想要实现什么。实际上不仅希望了解当前的正常运行时间,还希望了解过去的正常运行时间。因此我应该知道“计算机在过去 14 天内已经运行了 x 小时”或类似的信息。

另一个补充是,例如last 命令也不起作用 - 它不会显示系统是进入休眠还是挂起。

【问题讨论】:

    标签: ruby linux fedora uptime


    【解决方案1】:

    您可能想要解析last 命令的输出,该命令记录用户的登录信息。如果伪用户reboot“登录”,你就知道系统被重启了。 (这对 Ubuntu 有效;可能 Fedora 使用不同的名称,例如 boot。)

    可能会有更直接的界面;谷歌搜索ruby + utmputmp文件,一般在/var/run,记录了last命令上报的数据。

    【讨论】:

    • 不幸的是,最后一个命令不适用于我的目的,因为当系统进入睡眠状态时它不会记录。
    • @jayrock: last 还会在最后一列显示用户登录的时间。对于reboot,这等于系统正常运行时间。
    • 谢谢,看起来就可以了。让我再做一些测试。
    • 现在对此进行了广泛的测试。事实证明,当系统进入挂起或休眠状态时,确实重新启动保持登录状态。所以不幸的是我仍然没有一个好的解决方案。例如,我收到这条线reboot system boot 2.6.35.10-74.fc1 Wed Feb 16 20:00 - 08:36 (12:36) - 但可以肯定系统在夜间处于待机状态。
    • @jayrock:太糟糕了。也许您可以尝试用 Ruby 为 APMD 编写一个“代理程序”?见linux.die.net/man/8/apmd
    【解决方案2】:

    我不知道 ruby​​ 的细节,但在 linux 中有一个命令正常运行时间。

    我认为在 ruby​​ 中你需要使用 System

    所以它会像system 'uptime'

    然后你就可以解析那个结果了

    【讨论】:

      【解决方案3】:

      你会使用像uptime这样的反引号 尽管在此答案框中,StackOverflow 将它们视为代码样式。

      【讨论】:

        猜你喜欢
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        • 1970-01-01
        • 2021-04-04
        • 1970-01-01
        相关资源
        最近更新 更多