sudo: unable to resolve host xxxx: Name or service not known

前言

Linux 环境中,我使用 sudo 执行命令,发生报错:sudo: unable to resolve host xxxx: Name or service not known

解决

这个错误通常发生在更改主机名后,使用 sudo 命令时出现问题。sudo 命令会尝试解析主机名,但如果无法解析,就会出现"sudo: unable to resolve host"的错误。然而,如果您不使用 sudo 命令,就没有这个问题,这是因为 sudo 命令会尝试解析主机名,而普通命令不会。

以下是可能导致这个问题的原因和解决方法:

  1. /etc/hosts 文件中的主机名不匹配:检查 /etc/hosts 文件中的主机名是否与您的实际主机名匹配。如果不匹配,可以通过编辑 /etc/hosts 文件并将主机名更改为正确的值来解决这个问题。

  2. DNS解析问题:如果您的系统依赖DNS解析来解析主机名,那么可能存在DNS配置问题。您可以尝试检查您的DNS配置,并确保您的系统可以正确解析主机名。

  3. 网络连接问题:如果您的系统无法连接到网络,那么也可能导致无法解析主机名。确保您的网络连接正常,并尝试重新连接到网络。

实例:在 /etc/hosts 文件中,加上带有自己主机名的记录

vim /eth/host # 新增以下
127.0.0.1 niuben
systemd-resolve --flush-caches # 刷新/etc/hosts文件

要刷新Ubuntu上的/etc/hosts文件,您可以尝试以下方法:

  1. 清除DNS缓存:在终端中运行以下命令来清除DNS缓存,以便刷新/etc/hosts文件的更改:

    • 使用命令sudo systemd-resolve --flush-caches来清除DNS缓存[1]。
  2. 重启网络服务:在Ubuntu上,可以尝试重启网络服务来刷新/etc/hosts文件的更改。使用以下命令来重启网络服务:

    • sudo systemctl restart systemd-resolved[2]

请注意,刷新 /etc/hosts 文件可能需要管理员权限,因此在执行相关命令时可能需要使用sudo或管理员身份运行。

然后就可以正常使用 sudo 执行命令了