如何在Java中获取UNIX系统的运行时间?

8

如何在Java中获取UNIX的运行时间?是否有标准的Java库/函数可以使用,还是应该使用Runtime的exec或ProcessBuilder来执行“uptime”?谢谢。


1
@TomaszNurkiewicz 我之前看到了那个问题,但似乎它要求一个跨平台的解决方案。我正在寻找一些可以在 Nix 机器上特别工作的东西。 - Sam
对不起,我实际上找到了这样一个*NIX解决方案,请看我的回答。 - Tomasz Nurkiewicz
3个回答

9
您可以阅读 /proc/uptime:
new Scanner(new FileInputStream("/proc/uptime")).next();
//"1128046.07" on my machine and still counting

来自维基百科

显示系统自上次重新启动以来的运行时间:

$ cat /proc/uptime
  350735.47 234388.90

第一个数字是系统运行的总秒数,第二个数字是机器在几秒钟内空闲的时间

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

警告:这种方法可能无法在所有平台上正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接