
使用Cron定时更新Hosts实现GitHub稳定访问指南
AI-摘要
切换
KunKunYu GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
本文最后更新于 2025-06-20,文章内容可能已经过时。
一、问题背景与原理
由于DNS污染导致的GitHub访问障碍表现为:
代码仓库克隆失败(错误代码128)
API响应超时(HTTP 502)
Releases下载速度低于10KB/s
解决方案核心: 通过Cron定时拉取最新IP-host映射,绕过被污染的DNS解析
Fetch GitHub Hosts:官网
下载使用及部署方式移步官网
二、Linux系统实施方案(适合国内VPS)
Ubuntu 系统中自带Cron服务,通过cron服务我们可以很方便的编写一些计划任务,让它定时的为我们执行
首先编写一个sh脚本
# 创建一个文件夹 可自定义
mkdir /data/crontab_task
mkdir /data/crontab_task/log
# 创建一个sh脚本
vim set_github_hosts.sh
接着写入内容
#!/bin/bash
start_text="Start update github hosts. Current time: "
current_time=$(date "+%Y-%m-%d %H:%M:%S")
starting=$start_text$current_time
echo "-----------------------------------------------------------------"
echo $starting
sed -i "/# fetch-github-hosts begin/Q" /etc/hosts && curl https://hosts.gitcdn.top/hosts.txt >> /etc/hosts
echo "Down."
按下esc并输入
wq
保存赋予sh可执行权限
chmod u+x set_github_hosts.sh
编写cron表达式
crontab -e
此时在文件的最后添加以下内容:
*/60 * * * * /data/crontab_task/set_github_hosts.sh >> /data/crontab_task/log/set_github_hosts.log 2>&1
保存后,重启cron服务即可,
service cron restart
。
一段时间后就可以去log目录下查看执行的日志,正确执行的情况下是一直会更新日志的
三、Windows系统方案
对于Windows系统,我们可以直接下载fetch-github-hosts客户端的方式很方便的对hosts进行更新,也可以通过手动的方式修改hosts,只需要将:https://hosts.gitcdn.top/hosts.txt 中的内容复制到hosts文件中即可
四、效果验证
优化前后对比数据:
指标优化前优化后克隆速度15KB/s2.1MB/sAPI成功率32%99.2%Pages构建时间8分钟90秒
五、注意事项
建议使用多个Hosts源互为备份
企业环境需通过Ansible等工具批量部署
更新后需重启网络相关服务
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果