我们正在用java编写一个需要从底层系统收集信息的小型库。我们能够从 java 中的系统属性中读取大部分内容,但是在 linux 上运行时,我们似乎无法找到提取发行版名称的正确方法。通话
System.getProperty("os.name");
返回“Linux”(我们也收集),但我们也在寻找一种方法来获取例如“Ubuntu”。我们在 java 中需要这个解决方案,并且不想做一些 /etc/release 解析
我们正在用java编写一个需要从底层系统收集信息的小型库。我们能够从 java 中的系统属性中读取大部分内容,但是在 linux 上运行时,我们似乎无法找到提取发行版名称的正确方法。通话
System.getProperty("os.name");
返回“Linux”(我们也收集),但我们也在寻找一种方法来获取例如“Ubuntu”。我们在 java 中需要这个解决方案,并且不想做一些 /etc/release 解析
您可以尝试调用lsb_release -i
,但这不能保证有效。
要可靠和准确地做到这一点是不可能的,我能建议的最好办法是获取 'uname -a' 的输出并使用它。
注意:这不是 Java 限制 - 根本没有通用(和准确)的方法来识别分发。
我通常使用以下命令:
猫 /etc/问题
用 Java 读取这个文件应该很容易。问题是这个文件是否存在于每个(或至少大多数)Linux 发行版上。我在任何需要它的地方都找到了它,但是,它并不经常需要。