我有一个系统 - 可通过本地网络访问但未连接到互联网。我在更改该系统的主机名时遇到问题。我知道更改主机名是一个两步过程:
- hostnamectl set-主机名 myhost.mydomain
- sudo nano /etc/hosts -------> 打开文件/使用 sudo 执行任何命令需要很长时间 当命令执行时,我得到通常的结果
sudo: unable to resolve host myhost.mydomain: Name or service not known
问题是 sudo 命令发生延迟。我可以在连接到其他网络的设备上使用上述两步过程轻松更改主机名(无需观察 sudo 命令中明显的延迟)。只有连接到该网络的设备才会遇到 sudo 延迟问题。
更多实验 - 当我颠倒更改主机名的顺序时,即
- sudo nano /etc/hosts - # 附加 myhost.mydomain
- hostnamectl set-主机名 myhost.mydomain
一切都工作得很好,没有观察到 sudo 延迟问题。这导致(或误导)我相信 DNS 解析可能存在一些问题。但除此之外,我无法弄清楚为什么在这个特定网络上的系统上观察到这种延迟。
我在设置主机名之前和之后检查了 systemd-hostnamed 服务的日志,没有观察到错误。
请让我知道如何更有效地调试它
答案1
我遇到了同样的问题,hostnamectl 更新了我的 /etc/hostname,但它没有更新我的 /etc/hosts,这就是导致 sudo 执行非常慢的问题。
我解决的方法是手动编辑 /etc/hosts,例如,如果你想用“”替换旧主机名“ old_name
” new_name
,需要完成两个步骤:
$ sudo hostnamectl set-hostname new_name
只是为了形象化,举个例子:
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 old_name
#...
让我们将其更新为:
$ sudo vim /etc/hosts
127.0.0.1 localhost
127.0.1.1 new_name
#...
之后,我就跑了sudo ls
,它像往常一样很快就工作了。