如何发现正在使用的Linux发行版

有时我需要访问一些运行Linux的服务器(或者可能是另一个类似Unix的服务器),但是我不知道如何validation服务器上正在使用哪个发行版 (甚至有时甚至是服务器的“负责任”的人不知道)。

有没有一种简单可靠的方法来发现这一点,在所有这些方面都是统一的和一致的?

Solutions Collecting From Web of "如何发现正在使用的Linux发行版"

lsb_release -i可以为你工作。

lsb_release -a提供更多详细信息

一些讨论http://etbe.coker.com.au/2007/08/30/identifying-the-distribution-of-a-linux-system/

 cat /etc/*release 

大多数发行版都在/etc/ (如/etc/redhat-release/etc/gentoo-release等)中放置了一个发行版文件,这个发行版通常包含你的发行版本号。

令人烦恼的是,这是一个比看起来更难的问题。

对于Linux系统,使用lsb_release。

 $ lsb_release --all No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 8.04.1 Release: 8.04 Codename: hardy $ lsb_release -i Distributor ID: Ubuntu 

这有一个限制,即lsb_release只适用于Linux版本。

对于所有的Unix系统,你也可以解析uname。

 $ uname -a Linux blue-laptop 2.6.24-21-generic #1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux 

您可以在uname Wikipedia页面找到关于系统和分布的一些信息。

你应该问问自己,你是否真的需要知道哪个发行版正在使用(也许是因为你想建立一个特定于这个发行版的包)。 在其他许多情况下,只是测试一下你所需要的功能是否存在,这是一个好得多的想法。 这可能看起来像更多的工作,因为你必须逐一测试每个功能,但这样,你的软件变得更加灵活。

proc文件系统 :Linux中的一个目录,包含所有硬件级别的信息。 所以只要输入

 cd /proc/ 

在那里你会发现存储在一个文本文件中的关于系统的所有任意信息的金矿。

我发现/ etc /问题通常有一些关于使用中的分布。

但我不知道它在所有发行版上的可用性。

你可以使用'uname':

 [anton@localhost ~]$ uname -a Linux localhost 2.6.26-ARCH #1 SMP PREEMPT Tue Aug 26 21:15:43 UTC 2008 i686 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux 
 uname -r 

应该打印当前正在运行的内核版本(至少对于Linux来说,不知道它是否与* BSD或其他版本相同)。 这和发行版不一样,但是内核版本通常包含发行版名称,如果是定制的,比如“2.6.27-gentoo-r1”或者其他东西。

初始化通常会在启动时打印某些内容,但运行时并不好。

否则据我所知,没有什么是普遍的。

在我的.cshrc我有

 setenv DISTRO ` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' ` 

对于ksh / Bash用户,我认为它转化为

 export DISTRO=` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' ` 

当然这可能不适用于你最喜欢的发行版。 (我在Oracle的Unbreakable Linux中遇到了与Redhat类似的问题,但对于我的目的来说已经足够了。)

更新八月2016我有一段时间没有使用Linux(2008年是很久以前)。 看来,这不再适用于我现在的系统。

尝试uname -a