如何识别正在运行的 Linux 发行版?

mrT*_*awk 94 linux version

我们办公室有一些新硬件,它们运行自己定制的 Linux 操作系统。

我如何确定它基于哪个发行版?

2bc*_*2bc 125

一个非常接近这个问题的问题发布在 Unix.Stackexchange HERE 上 Giles有一个非常完整的 | 他描述的方式很酷的答案。

# cat /proc/version

Linux version 2.6.32-71.el6.x86_64 (mockbuild@c6b6.centos.org) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #1 SMP Fri May 20 03:51:51 BST 2011  
Run Code Online (Sandbox Code Playgroud)
# uname -a

Linux system1.doofus.local 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/issue

CentOS Linux release 6.0 (Final)
Kernel \r on an \m
Run Code Online (Sandbox Code Playgroud)

cat /proc/config.gz cat /usr/src/linux/config.gz cat /boot/config*

尽管我做了一些检查,但除 SUSE 外,这不是很可靠。

# zcat /proc/config.gz | grep -i 内核
CONFIG_SUSE_KERNEL=y
# CONFIG_KERNEL_DESKTOP 未设置
CONFIG_LOCK_KERNEL=y

/etc来自 Unix.com)中释放文件

  • Novell SuSE---> /etc/SuSE-release
  • 红帽--->/etc/redhat-release, /etc/redhat_version
  • Fedora-->/etc/fedora-release
  • Slackware--->/etc/slackware-release, /etc/slackware-version
  • 旧的 Debian --->/etc/debian_release, /etc/debian_version
  • 新Debian--->/etc/os-release
  • Mandrake--->/etc/mandrake-release
  • 黄狗-->/etc/yellowdog-release
  • Sun JDS--->/etc/sun-release
  • Solaris/Sparc--->/etc/release
  • Gentoo--->/etc/gentoo-release

在 Unix.com 链接上还有一个 bash 脚本,有人写来自动检查。

弄清楚你有什么包管理器是一个很好的线索。

rpm yum apt-get zypper +更多

尽管这绝不是万无一失的,因为供应商可以使用他们想要的任何东西。它真的只是给你一个开始的地方。

# dmesg | 较少的

Linux 版本 2.6.32.12-0.7-default (geeko@buildhost)(gcc 版本 4.3.4 [gcc-4_3-branch 修订版 152973](SUSE Linux))#1 SMP 2010-05-20 11:14:20 +0200

cat /proc/version与 &几乎相同的信息uname

  • 如果您位于容器中,请注意 cat /proc/version 将提供主机发行版,而不是容器发行版。 (6认同)
  • 请注意,对于centos,这应该是`cat /etc/*elease` http://unix.stackexchange.com/questions/54987/how-to-know-centos-version#comment400919_54988 (2认同)

rwc*_*rwc 45

你会想要使用:

$ cat /etc/*-release
Run Code Online (Sandbox Code Playgroud)

你会得到类似这样的回复:

$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确答案。请注意,“/proc”中的内容会告诉您 *kernel*(或者在这种情况下,编译器使用构建正在运行的内核的发行版),而不是 *发行版 * 本身。由于获取此信息本质上是特定于发行版的,因此 /etc/*-release 是最通用的方式。 (3认同)

Ren*_*nan 19

作为第一个猜测,尝试lsb_release -a。例如在 Arch Linux 系统上它给出

LSB 版本:n/a
发行商 ID:archlinux
描述:Arch Linux
版本:滚动
代号:n/a

但是,这可能会失败,然后您将不得不四处查看/etc(很可能它位于名称以 结尾的文件中-release)。也cat /etc/issue可能有帮助。


归档时间:

查看次数:

131069 次

最近记录:

7 年,9 月 前