OSX Sierra 主机文件被忽略

T10*_*000 23 mac hosts

出于某种原因,两天前我的主机文件开始被忽略。
我将 Mac 与 Sierra OSx 一起使用。这是 /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
Run Code Online (Sandbox Code Playgroud)

ping localkur.com 返回

ping: cannot resolve localkur.com: Unknown host
Run Code Online (Sandbox Code Playgroud)

我已经重新启动系统,使用这些命令清理缓存

sudo killall -HUP mDNSResponder;
sudo discoveryutil mdnsflushcache;
sudo discoveryutil udnsflushcaches;
Run Code Online (Sandbox Code Playgroud)

在不同的文本编辑程序、vm、sublime 等中重新打开文件。
仔细检查空格或制表符(或双空格或双制表符)- 测试所有可能性。
还使用此命令监视文件

 sudo fs_usage | grep "/etc/hosts"
Run Code Online (Sandbox Code Playgroud)

并在刷新浏览器或使用 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
Run Code Online (Sandbox Code Playgroud)

我错过了什么?
为什么这个文件会被忽略?
如何再次启用它?

小智 17

查看系统偏好设置 -> 网络

如果当前活动的“位置”列出了一个或多个 DNS 服务器,则系统将创建文件“/etc/resolv.conf”,该文件将列出这些名称服务器作为解析的地方,完全绕过 /etc/hosts

resolv.conf 由“网络”首选项动态创建,并根据当前活动“位置”的“DNS 服务器”字段覆盖,如果该字段为空则删除

  • 那么有什么解决办法呢?删除 DNS 选项卡上列出的 DNS。 (6认同)
  • 解决办法是什么?什么是明确的步骤? (2认同)

13d*_*tar 13

该文件可能已损坏/损坏,它必须是 ASCII 文件。你应该重新创建它:

  • 移动旧文件 mv -f /etc/hosts /etc/oldhosts
  • 创建一个新文件 nano
  • 用旧文件的值填充它
  • 将其另存为 /etc/hosts

那应该这样做。

  • 首先检查`file -I /etc/hosts` 输出是明智的。如果它输出 `charset=us-ascii`,这个答案对你不起作用。 (22认同)