笔记 | SwitchHosts自动刷新DNS缓存和重启nscd服务[Ubuntu]
warning: 这篇文章距离上次修改已过559天,其中的内容可能已经有所变动。
介绍
众所周知,Github在国内由于DNS污染而常常无法访问。故而诞生了种种解决手段。其中修改本地hosts文件直接进行本地DNS解析是其中一个合法且免费的手段。
本文将介绍在Ubuntu 20.04 LTS上,使用SwitchHosts软件每次自动更新hosts文件后,自动刷新DNS缓存并重启nscd服务,使得hosts文件立即生效。
![SwitchHosts界面在Ubuntu系统 SwitchHosts界面在Ubuntu系统](https://s2.loli.net/2023/02/26/INpzRLaJfXQgjm2.png)
正文
前提
首先本文默认你已经:
- 已经安装了指定版本或更新的SwitchHosts v4.1.2 (6086) for Linux
- 安装了nscd服务(使用
sudo apt-get install nscd
安装即可) - SwitchHosts上已经有稳定的可自动更新的Github的DNS解析记录(例如
Github520
、ineo6/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
,直接添加到上述命令的后面即可(当然也可以替换你觉得没用的命令)。
![添加命令行 添加命令行](https://s2.loli.net/2023/02/26/X1NtzARjeBiFkbK.png)
添加并保存后,尝试开关一次某个hosts源,再回来设置界面,点击查看历史记录(Show History)
查看命令行的历史执行情况,看看有没有报错。正常执行则应该如下图:
![正常执行显示的执行日志 正常执行显示的执行日志](https://s2.loli.net/2023/02/26/NcHyqOiKxjLI6QT.png)