OSX Sierra hosts 文件被忽略

OSX Sierra hosts 文件被忽略

由于某种原因,两天前我的 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。我的情况就是这样。修复得很好!

相关内容