笔记 | SwitchHosts自动刷新DNS缓存和重启nscd服务[Ubuntu]

warning: 这篇文章距离上次修改已过669天,其中的内容可能已经有所变动。

介绍

众所周知,Github在国内由于DNS污染而常常无法访问。故而诞生了种种解决手段。其中修改本地hosts文件直接进行本地DNS解析是其中一个合法且免费的手段。

本文将介绍在Ubuntu 20.04 LTS上,使用SwitchHosts软件每次自动更新hosts文件后,自动刷新DNS缓存并重启nscd服务,使得hosts文件立即生效。

SwitchHosts界面在Ubuntu系统SwitchHosts界面在Ubuntu系统

正文

前提

首先本文默认你已经:

  1. 已经安装了指定版本或更新的SwitchHosts v4.1.2 (6086) for Linux
  2. 安装了nscd服务(使用sudo apt-get install nscd安装即可)
  3. SwitchHosts上已经有稳定的可自动更新的Github的DNS解析记录(例如Github520ineo6/hosts等提供的hosts源)

步骤

很简单,只需在SwitchHosts的设置->偏好(Preferences)->命令行(Commends)中,写入刷新DNS缓存的命令即可。

下面是我自己使用的命令:

echo "hosts file updated"
sudo -S /etc/init.d/nscd restart << EOF 
[su密码]
EOF
echo "nscd restarted"
sudo systemd-resolve --flush-caches 
echo "dns caches flushed"

请将里面的[su密码]自行替换为自己的管理员密码,不需要添加["等。

如果效果不好,可以试试更换其他刷新DNS的方法,或者试试nscd专门刷新hosts缓存的命令sudo nscd -i hosts,直接添加到上述命令的后面即可(当然也可以替换你觉得没用的命令)。

添加命令行添加命令行

添加并保存后,尝试开关一次某个hosts源,再回来设置界面,点击查看历史记录(Show History)查看命令行的历史执行情况,看看有没有报错。正常执行则应该如下图:

正常执行显示的执行日志正常执行显示的执行日志

none
最后修改于:2023年02月26日 14:51

添加新评论