由于某种原因,两天前我的 hosts 文件开始被忽略。
我使用的是装有 Sierra OSx 的 Mac。这是 /etc/hosts 文件的当前内容
##
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhostage
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 localkur.com
Ping localkur.com 返回
ping: cannot resolve localkur.com: Unknown host
我已经重新启动系统,使用这些命令清理缓存
sudo killall -HUP mDNSResponder;
sudo discoveryutil mdnsflushcache;
sudo discoveryutil udnsflushcaches;
在不同的文本编辑程序(vm、sublime 等)中重新打开文件。
仔细检查是否有空格或制表符(或双空格或双制表符)- 测试了所有可能性。
还可以使用此命令监视文件
sudo fs_usage | grep "/etc/hosts"
刷新浏览器或使用 sublime 保存时得到该结果
12:23:35 open private/etc/hosts 0.000019 Google Chrom
12:23:36 open private/etc/hosts 0.000019 Google Chrom
12:23:41 stat64 /private/etc/hosts 0.000022 Sublime Text
12:23:43 stat64 /private/etc/hosts 0.000019 Sublime Text
12:23:45 stat64 /private/etc/hosts 0.000019 Sublime Text
12:23:45 open /private/etc/hosts 0.000019 Sublime Text
我遗漏了什么?
为什么忽略了此文件?
如何再次启用它?
答案1
该文件可能已损坏,它必须是 ASCII 文件。您应该重新创建它:
- 移动旧文件
mv -f /etc/hosts /etc/oldhosts
- 使用以下方式创建新文件
nano
- 用旧文件的值填充它
- 另存为
/etc/hosts
那就可以了。
答案2
查看系统偏好设置 -> 网络
如果当前活动的“位置”列出了一个或多个 DNS 服务器,则系统将创建文件“/etc/resolv.conf”,该文件将列出这些名称服务器作为要进行解析的地方,完全绕过 /etc/hosts
resolv.conf 由“网络”首选项动态创建,并根据当前活动“位置”的“DNS 服务器”字段进行覆盖,如果该字段为空,则删除
答案3
这肯定是一个老话题,但我今天也遇到了同样的问题,我找到了解决方案。把它留在这里,以防别人需要它。
sudo dscacheutil -flushcache
就我的情况来说,清除 DNS 缓存起了作用。
答案4
可能是使用 TAB 而不是 SPACE。我的情况就是这样。修复得很好!