我已经尝试过hostname
在ping
集群机器中使用不同的输出。我想知道两者有什么区别?例如,在同一台机器上,hostname
输出node4.XXX
和
ping -c 1 $(hostname)
输出pc333.XXX
。
答案1
该hostname
命令输出主机名来自系统本地主机名配置的系统的信息(可以是 /etc/hostname 或 /proc/sys/kernel/hostname 或其他,具体取决于操作系统)。
该命令ping -c 1 <hostname>
将通过<hostname>
指定的 libc 解析器(可能是也可能不是 DNS。例如,/etc/hosts 不是 DNS)执行查找,然后对返回的 IP 地址执行反向 DNS 查找并报告该名称在 ping 命令的输出中。
作为一个具体的例子,假设本地系统主机名是弗雷德如 中指定的/etc/hostname
。该hostname
命令将返回'弗雷德'。该命令ping -c 1 fred
将执行 DNS 查找fred
(只是fred
或fred
完全限定,例如fred.domain.com
默认域是domain.com
)。假设 DNS 返回 IP 地址x.x.x.x
。 ping
然后将执行 IP 地址的反向 DNS 查找x.x.x.x
,如果没有返回名称,ping
将输出 IP 地址x.x.x.x
,否则ping
将输出从反向查找返回的任何名称,这可能是不同的名称,例如ethel.domain.com
.