`hostname` 和 `uname -n` 有什么区别

`hostname` 和 `uname -n` 有什么区别

在我的服务器上,它们都返回主机名:

$ ubuntu@mt-solo:~$ uname -n
myserver
$ ubuntu@mt-solo:~$ hostname
myserver

总是这样吗?

答案1

在 Linux 上,它们是等效的。一个嵌入到uname实用程序中,另一个嵌入到hostname实用程序中。

uname -n

打印网络节点主机名或“节点名称”。

hostname

不带任何参数,打印 gethostname() 函数返回的系统名称。

uname()功能文档包括以下信息:

请注意,没有标准规定 sethostname(2) 设置的主机名与 uname() 返回的结构的节点名字段是相同的字符串(实际上,某些系统允许 256 字节的主机名和 8 字节的节点名),但在 Linux 上确实如此。setdomainname(2) 和域名字段也是如此。

(请注意,Linuxsethostname()将主机名限制为 64 个字节)

在 GNU/Linux 上,它们完全相同的进一步证据来自gethostname()功能文档

GNU C 库不使用 gethostname() 系统调用;相反,它将 gethostname() 实现为一个库函数,该函数调用 uname(2) 并从返回的 nodename 字段中复制最多 len 个字节成名字。

基本上,hostname包括对的内部调用uname

相关内容