2011-11-21 69 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 

警告:这是不可能在所有平台上工作。

相关问题