如何发现正在使用的Linux发行版
有时我需要访问一些运行Linux的服务器(或者其他类似Unix的服务器),但我不知道如何验证服务器上正在使用的服务器(有时甚至连服务器的“负责人”都不知道)如何发现正在使用的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
有没有一种简单可靠的方法可以发现,所有这些方法都是统一一致的?试试
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
显示有关分发的所有信息。您还可以使用仅显示说明的-d
uname
还提供系统信息。而-a
显示所有信息。您可以使用manuname
获取其他选项
cat
命令打印出etc文件夹中的所有特定发布信息。此命令实际上从/etc文件夹中读取lsb版本和操作系统版本文件
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/