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

Ste*_*ett 8 hostname

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

$ ubuntu@mt-solo:~$ uname -n
myserver
$ ubuntu@mt-solo:~$ hostname
myserver
Run Code Online (Sandbox Code Playgroud)

总是这样吗?

tho*_*ter 9

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

uname -n

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

hostname

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

uname()函数文档包括以下信息:

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

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

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

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

基本上,hostname包括对uname.