前言
在 Linux
环境中,我使用 sudo
执行命令,发生报错:sudo: unable to resolve host xxxx: Name or service not known
解决
这个错误通常发生在更改主机名后,使用 sudo
命令时出现问题。sudo
命令会尝试解析主机名,但如果无法解析,就会出现"sudo: unable to resolve host"的错误。然而,如果您不使用 sudo
命令,就没有这个问题,这是因为 sudo
命令会尝试解析主机名,而普通命令不会。
以下是可能导致这个问题的原因和解决方法:
-
/etc/hosts
文件中的主机名不匹配:检查/etc/hosts
文件中的主机名是否与您的实际主机名匹配。如果不匹配,可以通过编辑/etc/hosts
文件并将主机名更改为正确的值来解决这个问题。 -
DNS解析问题:如果您的系统依赖DNS解析来解析主机名,那么可能存在DNS配置问题。您可以尝试检查您的DNS配置,并确保您的系统可以正确解析主机名。
-
网络连接问题:如果您的系统无法连接到网络,那么也可能导致无法解析主机名。确保您的网络连接正常,并尝试重新连接到网络。
实例:在 /etc/hosts
文件中,加上带有自己主机名的记录
vim /eth/host # 新增以下
127.0.0.1 niuben
systemd-resolve --flush-caches # 刷新/etc/hosts文件
要刷新Ubuntu上的/etc/hosts文件,您可以尝试以下方法:
-
清除DNS缓存:在终端中运行以下命令来清除DNS缓存,以便刷新/etc/hosts文件的更改:
- 使用命令
sudo systemd-resolve --flush-caches
来清除DNS缓存[1]。
- 使用命令
-
重启网络服务:在Ubuntu上,可以尝试重启网络服务来刷新/etc/hosts文件的更改。使用以下命令来重启网络服务:
sudo systemctl restart systemd-resolved
[2]
请注意,刷新 /etc/hosts
文件可能需要管理员权限,因此在执行相关命令时可能需要使用sudo或管理员身份运行。
然后就可以正常使用 sudo
执行命令了