检查主机名的 IP 时出现错误“主机名:名称或服务未知”

The*_*One 18 ubuntu hostname ip-address

我在我公司的云服务上运行 Ubuntu 14.04(我的实例具有弹性 IP)。我想通过命令行查看我正在运行的实例的 IP 地址,但它不起作用。

root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known
Run Code Online (Sandbox Code Playgroud)

我不明白为什么。 

我试图 ping ubuntu14-graphite,但它说:

unknown host ubuntu14-graphite.
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的主机甚至不存在?

我有另一台服务器(不是云实例,而是物理服务器)。在这台服务器上,我安装了 CentOS?6.7。我检查了主机名的 IP,即使/etc/hosts.

这是输出cat /etc/hosts

127.0.0.1   localhost

# The following lines are desirable for IPv6 capable hosts
::1         ip6-localhost ip6-loopback
fe00::0     ip6-localnet
ff00::0     ip6-mcastprefix
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters
ff02::3     ip6-allhosts
Run Code Online (Sandbox Code Playgroud)

G-M*_*ca' 17

这意味着“系统”(我在广义、一般、模棱两可的意义上使用该术语)不知道该名称ubuntu14-graphite 对应于您的主机及其 IP 地址。(事实上​​,您的主机并不足以实现这一点。)这几乎肯定意味着ubuntu14-graphite 您的/etc/hosts文件† 中没有一行,并且它不在您的命名服务中(例如,DNS 或国家标准局)。因此,修复它的一种方法是将ubuntu14-graphite(及其 IP 地址)添加到您的/etc/hosts. 如果您使用更复杂的(分布式)命名系统,例如 DNS 或 NIS(或者 ActiveDirectory?),最终的解决方案是将您的主机添加到该服务。
_____________
† ...

关于应该将哪个 IP 地址与主机名关联的问题存在一些争论。每个人都同意它应该是一个对你的主机“有效”的地址;即,像这样的命令应该会成功。有些人建议使用环回地址。环回地址的格式始终为 127 .BCD;常见值为 127.0.0.1 和 127.0.1.1。其他人建议使用 LAN 地址,它可能看起来像 192.168 .CD(但它几乎可以是任何东西)——但是您不应该将动态分配的地址放入您的主机文件中(并且,如果您使用带有 DNS 的 DHCP,那么动态分配的地址应自动输入到您的 DNS 记录中)。使用像和 这样的命令来查看正在使用的地址。ping A.B.C.Difconfighostname -I