有时候我需要访问一些运行Linux的服务器(或者类似于其他类似Unix的服务器),但我不知道如何验证服务器上正在使用哪个distribution(有时甚至是服务器的“负责”的人不知道)。
是否有一种简单可靠的方法可以发现所有这些方法在所有方面均匀一致?
答案 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/)).*//' `
export DISTRO=` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' `
当然,这可能不适用于您最喜爱的发行版。 (我有Oracle's Unbreakable Linux给出与Redhat类似的问题,但这对我的目的来说已经足够了。)
2016年8月更新我暂时没有以这种方式使用过Linux(2008年很久以前)。对于我现在拥有的系统来说,这似乎不再适用了。
答案 5 :(得分:1)
我发现/ etc / issue通常与使用中的分发有关。
但我不知道它在所有发行版上的可用性。
答案 6 :(得分:1)
答案 7 :(得分:1)
您可以使用不同的命令来检查正在使用的分发。在这里,我只提及其中的5个。
lsb_relase -a
lsb_release
提供特定于分发的信息。而-a
显示有关分发的所有信息。您也可以使用仅显示说明的-d
。
uname -a
uname
还提供系统信息。而-a
显示所有信息。您可以将man uname
用于其他选项。
cat / etc / * release
您还可以使用cat
命令从 etc 文件夹中打印出所有特定版本信息。此命令实际上从 / etc 文件夹中读取 lsb-release 和 os-release 文件。
cat / etc / issue
此命令从 / etc 文件夹中读取问题文件。
cat / proc / version
此命令从 / 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)
...是一个非常专业的 BASH脚本,应具有您可能需要的所有信息。
(免责声明:我与它无关)
neofetch --stdout | grep '^OS: ' | sed -e 's/OS:[[:space:]]\+//'
可能给予:
Debian GNU / Linux 11(bullseye)x86_64
但是有更多信息。
选项:
系统包装neofetch
如果该功能不可用,请参见official installation instructions
或仅用于一次性使用-如果您有信心并可以连接互联网-您可以使用:
wget 'https://raw.githubusercontent.com/dylanaraps/neofetch/master/neofetch' \
&& bash neofetch --stdout \
&& rm neofetch
答案 11 :(得分:-1)
尝试uname -a