2011-11-21 73 views
7

在Java中獲得UNIX正常運行時間的最佳方法是什麼?有沒有我可以使用的標準Java庫/函數,還是應該使用Runtime的exec或ProcessBuilder執行「正常運行時間」?謝謝如何在Java中獲得UNIX正常運行時間?

+2

[查詢Java系統(而不是JVM)正常運行時間](http://stackoverflow.com/questions/674106/query-for-system-not-jvm-uptime-in-java) –

+1

@TomaszNurkiewicz我之前看到過這個問題,但似乎要求提供一個平臺不可知的解決方案。我正在尋找可以在Nix機器上專門工作的東西 – Sam

+0

對不起,我實際上找到了這樣的* NIX解決方案,請參閱我的答案。 –

回答

7

您可以閱讀/proc/uptime

new Scanner(new FileInputStream("/proc/uptime")).next(); 
//"1128046.07" on my machine and still counting 

Wikipedia

顯示系統已經多久就因爲它是一次重新啓動:

$ cat /proc/uptime 
    350735.47 234388.90 

第一個數字是系統已啓動的總秒數。第二個數字是機器閒置時間的多少,以秒爲單位。

+0

完美!謝謝,我會接受一次定時器讓我的 – Sam

+2

這對Linux很好,但不是所有的UNIX系統。例如,您可以從維基百科鏈接看到它不適用於BSD。 – vipw

+1

根據我對RHEL的測試第二個數字是所有處理器的空閒時間,所以它可以比第一個更大 '$ cat/proc/uptime 2418163.50 4809606.42' – Betlista

3
Runtime.getRuntime().exec('uptime'); 

你試過這個嗎?在java中執行相當於system('uptime');的唯一命令是runTime.exec()。這就是所有我能想到的..

3

這很可能是完全依賴於系統的,但你可以使用System.nanotime();

System.out.println("/proc/uptime " + new Scanner(new FileInputStream("/proc/uptime")).next()); 
System.out.println("System.nanoTime " + System.nanoTime()/1e9); 

打印

/proc/uptime 265671.85 
System.nanoTime 265671.854834206 

警告:這是不可能在所有平臺上工作。

相關問題