2011-02-14 51 views
1

感覺就像我曾經訪問過100次的stackoverflow。總是找到好的解決方案,但現在我卡住了。Ruby:檢測Fedora機器啓動時的時間

我想監視計算機每天運行多長時間。這是用Ruby編寫的程序的一部分,運行在Fedora機器上。

以前我在Windows下做過類似的事情,可以使用WndProc來捕獲相關的電源事件。然而,對於Fedora(或者一般的Linux),我並沒有發現檢測開機和關機/掛起/休眠/ ...的好鉤子。

任何建議都非常感謝。

感謝, jayrock

編輯:好像我沒有什麼我想要實現清晰。實際上想要獲得關於當前正常運行時間以及過去正常運行時間的信息。因此,我應該知道「計算機在過去14天內運行了x小時」或類似情況。

另一個補充是例如last命令也不會執行該任務 - 它不會顯示系統是進入休眠還是暫停狀態。

回答

0

我不知道Ruby的細節,但有一個命令在Linux的正常運行時間。

我想在Ruby中,你需要使用系統

所以它會是這樣的system 'uptime'

然後你就可以解析的是

0

結果你會使用反引號像uptime 的StackOverflow認爲他們作爲代碼樣式,儘管在這個答案框中。

1

您可能想要解析記錄用戶登錄名的last命令的輸出。如果僞用戶reboot「登錄」,則知道系統已重新啓動。 (這對於Ubuntu是有效的;也許Fedora使用不同的名字,例如boot)。

可能有更直接的接口;谷歌周圍ruby + utmputmp文件(通常位於/var/run)記錄了last命令報告的數據。

+0

不幸的是,最後一條命令不適用於我的目的,因爲它在系統進入睡眠狀態時不記錄。 – jayrock 2011-02-14 22:34:36