在我的服务器上,它们都返回主机名:
$ 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
。