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

如何发现正在使用的Linux发行版,linux,operating-system,Linux,Operating System,有时我需要访问一些运行Linux的服务器(或者其他类似Unix的服务器),但我不知道如何验证服务器上正在使用的服务器(有时甚至连服务器的“负责人”都不知道) 有没有一种简单可靠的方法可以发现,所有这些方法都是统一一致的?试试uname-a你可以使用“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

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


有没有一种简单可靠的方法可以发现,所有这些方法都是统一一致的?

试试
uname-a
你可以使用“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
应该打印当前正在运行的内核版本(至少,它适用于Linux,我不知道) 如果对*BSD或其他文件相同)。这与发行版不同,但如果是定制的,内核版本通常会包含发行版名称,比如“2.6.27-gentoo-r1”之类

Init经常在启动时打印一些东西,但在运行时这不是很好


否则,据我所知,没有任何通用的版本。

lsb_release-I
可能适合您

更多详细信息可从lsb_发行版-a获得

一些讨论


大多数发行版都将发行版文件放在
/etc/
(如
/etc/redhat release
/etc/gentoo release
等)中,其中通常包含发行版的版本号。

在我的
中。cshrc
我有

setenv DISTRO `sed -e 's/.*(//' -e 's/)).*//' /proc/version`
对于/用户,我认为它可以翻译为

export DISTRO=`sed -e 's/.*(//' -e 's/)).*//' /proc/version`
当然,这可能不适用于您最喜欢的发行版。(我在提供类似Redhat的东西时遇到了一些问题,但对于我来说已经足够好了。)


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

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

对于Linux系统,请使用lsb_版本

$ 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_版本仅适用于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

您可以在上找到有关系统和发行版的一些信息。

我发现/etc/问题通常与正在使用的发行版有关


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

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

Linux中的:一个包含所有硬件级别信息的目录。那就打字吧

cd /proc/

在那里,您可以找到存储在文本文件中的有关系统的所有任意信息的信息宝库。

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

  • lsb_放松-a

  • lsb_发行版
    提供特定于发行版的信息。而
    -a
    显示有关分发的所有信息。您还可以使用仅显示说明的
    -d

  • 联阿援助团

  • uname
    还提供系统信息。而
    -a
    显示所有信息。您可以使用
    manuname
    获取其他选项

  • cat/etc/*发布

  • 您还可以使用
    cat
    命令打印出etc文件夹中的所有特定发布信息。此命令实际上从/etc文件夹中读取lsb版本操作系统版本文件

  • cat/etc/问题

  • 此命令从/etc文件夹读取问题文件

  • cat/proc/version

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

    NeoFetch 。。。是一个相当专业的BASH脚本,应该包含您可能需要的所有信息

    (免责声明:我与之无关)

    用法
    neofetch--stdout | grep'^OS:'| sed-e的/OS:[[:space:]\+/'
    
    可能会给出:

    Debian GNU/Linux 11(bullseye)x86_64

    但是还有更多的信息

    装置 选项:

  • 系统包
    neofetch

  • 如果不可用,请参阅

  • 或者,如果您有信心并连接到互联网,您可以一次性使用:

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

  • uname显示版本和体系结构,但不显示发行版(Red Hat、SuSE、Ubuntu等)。通常发行版会添加到版本中,就像示例中的发行版是Arch Linux一样。对于Arch来说,除了/etc/issue之外,所有提到的其他想法都不起作用。那么为什么要投否决票呢?不幸的是,许多发行版都有一个非常小的/etc/问题,其中只有“This is\n.\O(\s\m\r)\t”这样的内容,它没有给出发行版的真实信息。是的,它在Ubuntu上工作。我得到了“
    ubuntu16.04.1lts\n\l
    ”。是的,\n和\l是文字(不是ASCII 13和10)。lsb_release-d为我提供了更好的结果-我给出了“分销商ID:CentOS”-d给出了“Description:CentOS release 5.2(Final)”。@Peter:真的需要将“distribution”更改为“distribution”吗?因此
    cat/proc/version
    将返回有关该版本的信息。
    cd/proc
    本身没有任何用处。您不必通过
    cd
    读取目录中的文件,通常也不需要(虽然在交互式shell中,它可以避免键入长路径;但脚本通常很少需要
    cd
    )。
    proc
    中的许多文件使用C字符串,因此它们不是tec
    $ uname -a
    Linux blue-laptop 2.6.24-21-generic #1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux
    
    cd /proc/