Answers:
普遍使用以下方法检测内核uname
:
$ uname -or
2.6.18-128.el5 GNU/Linux
确实没有一种跨发行版的方法可以确定您使用的发行版和版本。已经尝试使这一点保持一致,但是不幸的是,最终它还是有所不同。LSB工具提供了此信息,但具有讽刺意味的是,并非默认情况下在所有位置都安装了LSB工具。在lsb-release
安装了软件包的Ubuntu 9.04系统上的示例:
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
否则,最接近的广泛使用的方法是检查文件。它们存在于大多数常见平台及其派生版本(即Red Hat和CentOS)上。/etc/something-release
这里有些例子。
Ubuntu有/etc/lsb-release
:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
但是Debian有/etc/debian_version
:
$ cat /etc/debian_version
5.0.2
Fedora,Red Hat和CentOS具有:
Fedora: $ cat /etc/fedora-release
Fedora release 10 (Cambridge)
Red Hat/older CentOS: $ cat /etc/redhat-release
CentOS release 5.3 (Final)
newer CentOS: $ cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
Gentoo:
$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1
我目前没有SUSE系统,但我相信是/etc/SuSE-release
。
Slackware具有/etc/slackware-release
和/或/etc/slackware-version
。
曼德里瓦有/etc/mandriva-release
。
对于大多数流行的发行版,
$ cat /etc/*{release,version}
将最常工作。精简而简陋的“服务器”安装可能没有安装发行版的“发行版”软件包。
此外,可以用于自动获取此信息的两个第三方程序是Ohai和Facter。
请注意,许多发行版都在/etc/issue
或中包含此类信息/etc/motd
,但是某些安全策略和最佳做法表明这些文件应包含访问通知标语。
相关: 如何找出节点上安装的软件包的版本?, p。
您也可以尝试:
$ cat /etc/issue
通常(尽管并非总是如此)会告诉您所使用的发行版。/etc/issue
是用于登录屏幕的文件。
\S[newline]Kernel \r on an \m
cat /etc/os-release
对于Ubuntu,Fedora和OpenSUSE至少要这样。
至少在10.9(Mavericks)之前不适用于OSX。请改用sw_vers。
OpenSUSE的cat / etc / SuSE-release直到13.1,但不推荐使用os-release。
Redhat 6.1具有cat / etc / redhat-release
lsb_release -a && uname -r
也可以通过将Python与platform
模块一起使用来解决此问题:
使用platform()
功能:
python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6
上面的命令返回一个字符串,该字符串标识具有尽可能多的有用信息的基础平台。
或使用uname()
功能:
python -c 'import platform; print platform.uname()'
# ('Linux', 'debian', '4.9.0-8-amd64', '#1 SMP Debian 4.9.130-2 (2018-10-27)', 'x86_64', '')
上述命令返回一个namedtuple()
包含六个属性:system
,node
,release
,version
,machine
,和processor
。
或使用dist()
功能:
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
最后一个命令试图确定Linux OS发行版名称的名称,但是从Python 3.5开始不推荐使用,它将在Python 3.8中删除。