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

时间:2008-11-05 03:41:40

标签: linux operating-system

有时候我需要访问一些运行Linux的服务器(或者类似于其他类似Unix的服务器),但我不知道如何验证服务器上正在使用哪个distribution(有时甚至是服务器的“负责”的人不知道)。

是否有一种简单可靠的方法可以发现所有这些方法在所有方面均匀一致?

12 个答案:

答案 0 :(得分:26)

lsb_release -i可能适合您。

lsb_release -a

提供了更多详细信息

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

的一些讨论

答案 1 :(得分:24)

cat /etc/*release

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

答案 2 :(得分:7)

令人讨厌的是,这是一个比它看起来更难的问题。

对于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 page找到有关系统和分发的一些信息。

答案 3 :(得分:3)

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

答案 4 :(得分:1)

.cshrc我有

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

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

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

当然,这可能不适用于您最喜爱的发行版。 (我有Oracle's Unbreakable Linux给出与Redhat类似的问题,但这对我的目的来说已经足够了。)

2016年8月更新我暂时没有以这种方式使用过Linux(2008年很久以前)。对于我现在拥有的系统来说,这似乎不再适用了。

答案 5 :(得分:1)

我发现/ etc / issue通常与使用中的分发有关。

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

答案 6 :(得分:1)

proc file system:Linux中的一个目录,包含所有硬件级别信息。所以只需输入

即可
cd /proc/

在那里,您将找到存储在文本文件中的金矿信息,以获取有关系统的所有任意信息。

答案 7 :(得分:1)

您可以使用不同的命令来检查正在使用的分发。在这里,我只提及其中的5个。

  1.   

    lsb_relase -a

  2. lsb_release提供特定于分发的信息。而-a显示有关分发的所有信息。您也可以使用仅显示说明的-d

    1.   

      uname -a

    2. uname还提供系统信息。而-a显示所有信息。您可以将man uname用于其他选项。

      1.   

        cat / etc / * release

      2. 您还可以使用cat命令从 etc 文件夹中打印出所有特定版本信息。此命令实际上从 / etc 文件夹中读取 lsb-release os-release 文件。

        1.   

          cat / etc / issue

        2. 此命令从 / etc 文件夹中读取问题文件。

          1.   

            cat / proc / version

          2. 此命令从 / proc 文件夹中读取版本文件。 / proc 文件夹包含有关系统进程的信息。

答案 8 :(得分:0)

您可以使用'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

答案 9 :(得分:0)

uname -r

应该打印当前运行的内核版本(至少,它适用于Linux,不知道 如果对于* BSD或其他人来说是相同的)。这与发行版不同,但内核版本通常包括发行版名称,如果它是自定义的,如“2.6.27-gentoo-r1”或其他东西。

初始化经常在启动时打印一些东西,但是当它运行时这并不是很好。

另外据我所知,没有什么普遍的。

答案 10 :(得分:0)

NeoFetch

...是一个非常专业的 BASH脚本,应具有您可能需要的所有信息。

免责声明:我与它无关)

用法

neofetch --stdout | grep '^OS: ' | sed -e 's/OS:[[:space:]]\+//'

可能给予:

  

Debian GNU / Linux 11(bullseye)x86_64

但是有更多信息。

安装

选项:

  1. 系统包装neofetch

  2. 如果该功能不可用,请参见official installation instructions

  3. 或仅用于一次性使用-如果您有信心并可以连接互联网-您可以使用:

    wget 'https://raw.githubusercontent.com/dylanaraps/neofetch/master/neofetch' \
        && bash neofetch --stdout \
        && rm neofetch
    

答案 11 :(得分:-1)

尝试uname -a