【问题标题】:Getting specific system information using environment variables使用环境变量获取特定系统信息
【发布时间】:2012-09-09 17:39:17
【问题描述】:

请看下面的代码

Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));}

使用此代码 sn-p,我获得了我需要的所有信息,以及许多不需要的信息。老实说,我需要的是处理器数量和处理器标识符。这两个存储在 Windows 系统中的环境变量 PROCESSOR_IDENTIFIER 和 NUMBER_OF_PROCESSORS 中。

我无法调用此代码

System.out.println("Processor Data: "+ System.getenv("PROCESSOR_IDENTIFIER")); 
    System.out.println("Number of Processors: "+System.getenv("NUMBER_OF_PROCESSORS"));

原因是,oracle 它自己说环境变量因系统而异。这意味着,USERNAME windows 环境变量是 LOGIN 或 UNIX 系统中的用户名。像这样,它在其他系统中可能有各种其他名称。

但是,我真的不需要循环提供给我的所有信息。我只需要这两个。我正在考虑使用如下代码。

if("os.name" == "Windows")
{
System.out.println("Processor Data: "+ System.getenv("PROCESSOR_IDENTIFIER")); 
}

但是,在这种情况下,我不知道我需要检查多少个系统(我的意思是,这些环境变量是否会从操作系统更改为操作系统或系统更改为系统?如果我说得更清楚,这些变量是在 Linux 内核中相同或在 Ubuntu、Fedora、Red Hat 等中更改?)

我不知道如何通过省略其余数据来获取我需要的仅有的两个数据。请帮忙。我很高兴看到代码有帮助。谢谢

【问题讨论】:

标签: java operating-system environment-variables


【解决方案1】:

你可以试试Runtime.getRuntime().availableProcessors(); 吗?

【讨论】:

  • 这正是我的答案,但提供了整个问题:)
  • 不,它是基于 JVM 的。它将获得 JVM iNFO
【解决方案2】:

CPU/内核数:Finding Number of Cores in Java 不要认为可以通过方便的跨平台方式获取 CPU 类型。

【讨论】:

  • 那是JVM。我不能使用这个 JVM 的情况是,一个错误信息 = 数百万用户以错误的方式修复计算机..这是一件非常糟糕的事情!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 2013-06-17
  • 2012-02-09
  • 2016-09-29
  • 2015-08-20
  • 2015-09-16
  • 1970-01-01
相关资源
最近更新 更多