Linux uname 命令(获取内核版本、发行版、主机名等)示例

举报
Tiamo_T 发表于 2022/07/08 16:56:27 2022/07/08
【摘要】 Linux uname 命令(获取内核版本、发行版、主机名等)示例

有时需要快速确定正在使用的 Linux 机器的内核名称、版本、主机名等详细信息。

尽管可以在 proc 文件系统下的各个文件中找到所有这些详细信息,但使用 uname 实用程序可以更轻松地快速获取这些信息。

uname 命令的基本语法是:

uname [OPTION]...

现在让我们看一些演示“uname”命令用法的示例。

uname 没有任何选项

当 'uname' 命令在没有任何选项的情况下运行时,它只打印内核名称。所以下面的输出表明它是这个系统使用的“Linux”内核。

$ unname 
Linux

您还可以使用 uname -s,它也显示内核名称。

$ unname -s 
Linux

使用 -n 选项获取网络节点主机名

使用 uname -n 选项来获取 Linux 机器的网络节点主机名。

$ uname -n
dev-server

上面的输出将与 hostname 命令的输出相同。


使用 -r 选项获取内核版本

uname 命令也可用于获取内核版本信息。选项 -r 可用于此目的。

$ uname -r 
2.6.32-100.28.5.el6.x86_64

使用 -v 选项获取内核版本

uname 命令也可用于获取内核版本信息。选项 -v 可用于此目的。

$ uname -v
#1 SMP Wed Feb 2 18:40:23 EST 2011

使用 -m 选项获取机器硬件名称

uname 命令也可用于获取机器硬件名称。选项 -m 可用于此目的。这表明它是一个 64 位系统。

$ unname -m 
x86_64

使用 -p 选项获取处理器类型

uname 命令也可用于获取处理器类型信息。选项 -p 可用于此目的。如果 uname 命令无法获取处理器类型信息,那么它会在输出中生成“未知”。

$ uname -p 
x86_64

如果 uname 无法获取有关处理器类型的信息,有时您可能会看到此命令的输出为“未知”。

使用 -i 选项获取硬件平台

uname 命令也可用于获取硬件平台信息。选项 -i 可用于此目的。如果 uname 命令无法获取硬件平台信息,则它会在输出中生成“未知”。

$ uname -i 
x86_64

如果 uname 无法获取有关平台的信息,有时您可能会看到此命令的输出为“未知”。

使用 -o 选项获取操作系统名称

uname 命令也可用于获取操作系统名称。选项 -o 可用于此目的。

例如 :

$ uname -o 
GNU/Linux

使用 uname -a 选项获取所有信息

到目前为止,我们已经学会使用不同的标志访问的所有信息都可以一次性获取。选项 -a 可用于此目的。

$ uname -a 
Linux dev-server 2.6.32-100.28.5.el6.x86_64 #1 SMP Wed Feb 2 18:40:23 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

uname 输出中的未知值

在写这篇文章时,我有点好奇为什么 uname 实用程序在我运行 Ubuntu 的笔记本电脑上返回处理器类型 (-p) 和硬件平台 (-i) 的“未知”。我对这个问题进行了一些研究。

我发现的一种解释是 uname 命令使用 uname() 函数(man 2 uname)从以下内核结构中读取所有信息:

struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* OS release (e.g., "2.6.28") */
               char version[];    /* OS version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

由于此结构中不存在有关处理器类型和硬件平台的信息,因此 uname 命令为它们返回“未知”。

我发现的另一种解释是,在 uname.c 内部,-p 选项的处理如下:

char const *element = unknown;
#if HAVE_SYSINFO && defined SI_ARCHITECTURE
{
  static char processor[257];
  if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
    element = processor;
}
#endif

宏 HAVE_SYSINFO 和 SI_ARCHITECTURE 未在内核中的任何位置定义,因此返回未知。选项 -i 也是如此。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。