linux hostname -f 命令在 RHEL 上不起作用

linux hostname -f 命令在 RHEL 上不起作用

我正在运行 RHEL 5.7,该hostname命令为我提供了正确的主机名。
但是hostname -shostname -f返回:Unknown host.为什么?

答案1

(复制自我对SF的回答之一

hostname命令返回来自 DNS 和/etc/hosts.

hostname相当于uname -n并且是盒子的实际“主机名”或“节点名”。
所有其他hostname参数都使用此节点名来查找信息。

因此,在进一步讨论之前,我应该解释一下/etc/hosts文件格式。
第一个字段相当明显,它是线路上所有主机名应解析的 IP 地址。第二个字段是该 IP 的主要主机名。其余字段是别名。

因此,如果您运行hostname -f它,它将首先尝试解析您的节点名的 IP。根据您hosts:/etc/nsswitch.conf此方法中配置条目的方式,该方法会有所不同。

  • 如果您将其配置为使用 dns,它将使用配置的搜索域,/etc/resolv.conf直到从 DNS 获取 IP。
  • 如果您将其配置为使用文件,它将查找/etc/hosts主主机名或别名是您当前节点名 ( uname -n) 的行,然后返回该行中的 IP 地址。

一旦获得 IP,它将尝试对该 IP 进行反向查找。再次,它会使用 DNS 以及基于您的 .hosts 文件nsswitch.conf。如果使用主机文件,它将返回主条目(即文件中 IP 后面的第一个字段)。

hostname -a只能使用主机文件,因为在 DNS 中进行反向查找只会得到 1 个结果。通过主机文件,它返回匹配行中的别名(这是第一个条目(主主机名)之后的所有内容)。

 

简而言之,您的问题的可能原因是您没有/etc/hosts包含您的主机名 ( uname -n) 的条目。


例子
如果您的节点名是“foobar”,并且您有一个/etc/hosts如下所示的条目:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

然后你会得到如下命令结果:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost

相关内容