从java检测linux发行版

时间:2015-09-19 16:16:59

标签: java linux

是否存在(最好是高效的,即没有执行二进制文件并解析其输出)检测Java中Linux发行版的方法?据我所知,System提供的os.nameos.archos.version似乎无法提供帮助。对于典型的Ubuntu安装,他们会得到以下值:

  

os.name:amd64

     

os.arch:Linux

     

os.version:3.19.0-28-generic

我需要的是它是基于debian的,redhat系列还是其他人。

2 个答案:

答案 0 :(得分:2)

我认为解析文件在Linux下的方式。你当然可以只做一次。

在Linux上查找此类信息的正确文件是/etc/*-release,在我的机器上提供以下输出:

$ cat /etc/*-release                                                                                        
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

然后您可以解析ID_LIKE变量,它将为您提供所需的确切信息(我无法保证,但我认为它将始终位于每个Linux发行版的第8行)。

答案 1 :(得分:1)

您应该阅读其中一个文件:

/etc/release
/etc/lsb-release

在最近的发行版中,您还会发现:

/etc/os-release