26

出于某种原因,两天前我的主机文件开始被忽略。
我将 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

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

我错过了什么?
为什么忽略此文件?
如何再次启用它?

8 个答案 正确答案

13

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

  • 移动旧文件mv -f /etc/hosts /etc/oldhosts

  • 创建一个新文件nano

  • 用旧文件的值填充它

  • 另存为/etc/hosts

那应该这样做。

  • 1
    谢谢,这就是我的问题!该文件看起来完全正常,但显然是更改了编码或其他内容。'cat /etc/hosts' 可以看到它,因为 cat 没有列出文件的全部内容,只是最后一行.... 
    – T1000
     2017 年 3 月 22 日 15:42
  • 25
    首先检查file -I /etc/hosts输出是明智的。如果它输出charset=us-ascii,则此答案对您不起作用。  2018 年 7 月 20 日 9:32
  • 这不完全是我所需要的,但也许我在做一些其他格式错误或什么的。会继续找......  2020 年 9 月 15 日 8:45
18

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

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

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

2

此外,请确保您的主机名列表不超过 20 个名称。我经常访问一个喜欢在您面前投放广告的网站,因此我将弹出窗口中的 FQDN 指定为 localhost 的别名。最近我发现我的主机文件不起作用。似乎限制是 20 台主机......示例:

127.0.0.4 www.slutroulette.com static.exoclick.com www.gameskwala.com www.thefreecamsecret.com www.slutroulette.com cdn1.adexpert.com cdn2.adexpert.com cdn3.adexpert.com cdn3.adexperts.com abine。 com www.abine.com e1.static.hoptopboy.com.rncdn1.com gameinvite.24trk.com main.exoclick.com 0427d7.se syndication.exoclick.com 0427d7.se Gamingruff.com www.gamingruff.com mackeeperapp.zeobit。 com
127.0.0.5 ads.adplxmd.com mackeeperapp3.mackeeper.com onclickads.net onclick.net fundownloads108.com pussl10.com marblesleague.com kitsfilesdll.com pussl8.com nowsetup.enterworldofupgrading.review playgr8.com autoupdate.thebigandgoodfree4upgrading.trade om.elvenar .com www.hitcpm.com www.ibtimes.co.uk mysagagame.com
2

这肯定是一个旧线程,但我今天面临同样的问题,我找到了解决方案。把它留在这里以防其他人需要它。

sudo dscacheutil -flushcache

在我的情况下,刷新 DNS 缓存就可以了。

1

它可以使用 TAB 而不是 SPACE。就我而言。修好了!

1

我遇到了同样的问题,并尝试了诸如刷新缓存或重新创建文件之类的所有方法,但没有任何效果。最终我发现读取权限不正确。

正确的权限应该是:

$ ls -ld /etc/hosts        
-rw-r--r--  1 root  wheel  623 Aug  6 11:27 /etc/hosts

出于某种原因,在我的情况下,组和其他人没有读取权限。添加这个有效:

$ sudo chmod g+r /etc/hosts
$ sudo chmod o+r /etc/hosts

所以,如果你需要用这个sudo来读取文件,cat /etc/hosts很可能是你的问题。

  • -rw-r--r--看起来 other 和 group 已经有读取权限,不是吗?  2020 年 12 月 4 日 9:44
  • @oarfish 第一个灰色框显示了我们想要的,而不是 chmod 命令之前的状态。这就是为什么我把“正确的权限应该是”放在它上面的原因。  2020 年 12 月 30 日 13:10
  • 这就是最终为我工作的原因。奇怪的是,这是在全新的 MacBook(运行 12.1)上,所以我假设库存配置有一个正常工作的主机文件。  2 月 2 日 12:49
0

对我来说,问题是粘贴详细信息。刷新缓存等不起作用。

删除原始条目并手动输入所有内容,然后第一次工作!

0

/etc/hosts 必须有 unix 风格的行尾。

在我的例子中,我使用了 Sublime 并使用默认的 Mac OS 样式保存了 /etc/hosts。这是问题的原因。

从这里采取的解决方案:https ://stackoverflow.com/a/42265844/1331420