有没有一种方法可以确定在任何Linux系统上都可以运行的Linux版本(我想是发行版和内核版本)(从命令行)?

#1 楼

可以使用uname来普遍检测内核:已经尝试使这一点保持一致,但是不幸的是,最终它还是有所不同。 LSB工具提供了此信息,但具有讽刺意味的是,并非默认情况下在所有位置都安装了LSB工具。在安装了lsb-release软件包的Ubuntu 9.04系统上的示例:

$ uname -or
2.6.18-128.el5 GNU/Linux


否则,最广泛使用的方法是检查/etc/something-release文件。它们存在于大多数常见平台及其派生产品(例如Red Hat和CentOS)上。这里有一些示例。

Ubuntu有/etc/lsb-release

$ lsb_release -irc
Distributor ID: Ubuntu
Release:        9.04
Codename:       jaunty


但是Debian有/etc/debian_version

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"


Fedora,Red Hat和CentOS具有: />
$ cat /etc/debian_version
5.0.2


Gentoo:

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)


目前我没有SUSE系统,但我相信它是/etc/SuSE-release

Slackware具有/etc/slackware-release和/或/etc/slackware-version

Mandriva具有/etc/mandriva-release。 />
$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1


最常工作。精简而简陋的“服务器”安装可能未安装该发行版的“发行版”软件包。

另外,您可以用来自动获取此信息的两个第三方程序是Ohai和Facter。

请注意,许多发行版在/etc/issue/etc/motd中都有此类信息,但是一些安全策略和最佳实践表明这些文件应包含访问通知标语。

相关: >如何找出安装在节点上的软件包的版本?,
p。

评论


大声笑在这里我想建议:寻找关于!

– Ivo Flipse
09年7月22日在19:40

Slackware具有/ etc / slackware-version

– Ken Keenan
09年7月22日在19:45

谢谢Ken,我也没有Slackware系统。

– jtimberman
09年7月22日在19:56

IOW:ls / etc / * {release,version}并检查返回的内容...

–freiheit
09年7月22日在20:11

大多数也有/ etc / issue

–德鲁·斯蒂芬斯(Drew Stephens)
09年7月23日在6:42

#2 楼

您也可以尝试:

$ cat /etc/issue


通常(并非总是如此)会告诉您所使用的发行版。 /etc/issue是用于登录屏幕的文件。

评论


这是在共享Media Temple服务器上唯一为我确定的服务器。谢谢!!

– TryTryAgain
13年2月8日在18:03

哈,在RedHat上,这只是\ M上的\ S [newline]内核\ r

–松饼
2015年2月2日在20:21

以Linux Mint为例

–questionto42
20/12/11在23:02



#3 楼

内核:uname -a

评论


+1。对于类似MinGW的系统,要求使用“ -a”来获取版本信息,例如,“ MINGW32_NT-5.1 LAP065 1.0.17(0.48 / 3/2)2011-04-24 23:39 i686 Msys”。

– Peter Mortensen
2012年5月2日在8:39



#4 楼

cat /etc/os-release
对于Ubuntu,Fedora和OpenSUSE至少为


至少在10.9(Mavericks)之前,它不适用于OSX。使用sw_vers代替。

OpenSUSE的cat / etc / SuSE-release直到13.1,但不推荐使用os-release。释放

评论


DOC:freedesktop.org/software/systemd/man/os-release.html

– Pevik
16年11月3日在8:55

#5 楼

lsb_release -a(如果可用)很有用。

#6 楼

cat /proc/version在共享的VPS上找到我Red Hat。

#7 楼

内核:uname -r

发行版:lsb_release -a

这些将在大多数Linux系统上运行

#8 楼

单线
lsb_release -a && uname -r


评论


作为对Albert Z答案的评论,这可能更合适。

–fixer1234
18年1月29日在21:52

强大的答案可以得出所有答案!我必须为此付出努力:)

–.B.Kocis
18-3-27在13:17



#9 楼

使用Python和platform模块也可以解决此问题:

使用platform()函数:

python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6


以上命令返回一个字符串,用于标识具有尽可能多的有用信息的基础平台。

或使用uname()函数: :namedtuple()systemnodereleaseversionmachine

或使用processor函数: Linux OS发行版名称的名称,但是自Python 3.5起不推荐使用,并将在Python 3.8中删除。