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 也是如此。
- 点赞
- 收藏
- 关注作者
评论(0)