因为总所周知的原因,GitHub在国内的访问是不稳定的,经常抽风,不使用一点科学的手段没有办法很好的进行访问,所以就有通过获取GitHub最新的可访问的ip,手动更新到系统的hosts文件中的办法来应对

fetch-github-hosts

官网的介绍:fetch-github-hosts 是主要为解决研究及学习人员访问 Github 过慢或其他问题而提供的 Github Hosts 同步工具

官网链接:https://hosts.gitcdn.top/

对于Windows系统,我们可以直接下载fetch-github-hosts客户端的方式很方便的对hosts进行更新,也可以通过手动的方式修改hosts,只需要将:https://hosts.gitcdn.top/hosts.txt 中的内容复制到hosts文件中即可

Cron

Ubuntu 系统中自带Cron服务,通过cron服务我们可以很方便的编写一些计划任务,让它定时的为我们执行

crontab 的用法如下:

usage: crontab [-u user] file crontab [ -u user ] [ -i ] { -e | -l | -r } (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab)

常用的命令

crontab -u root -e #编辑用户 root 的计划任务文件(需要有 root 权限) crontab -e #编辑当前用户的计划任务文件 crontab -u root -l #显示用户 root 的计划任务文件(需要有 root 权限) crontab -l #显示当前用户的计划任务文件 crontab -r #删除当前用户的计划任务文件

cron 语法格式

m h dom mon dow command 0-59 0-23 1-31 1-12 0-7 command m 表示分钟 0-59 h 表示小时 0-23 dom day of month,表示日期 1-31 mon month,表示月份 1-12 dow day of week,表示星期 0-7 command 待执行的命令 -

需要特殊说明的是,dow 的取值范围为 0-7 共 8 个数,1-6 分别表示周一-周六,0 和 7 均表示周日

另外需要使用一些特殊符号实现灵活的配置:

  • 代表所有值
    / 代表“每”
  • 代表范围
    , 分割数字

使用Cron定时执行sh更新GitHub Hosts

首先编写一个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目录下查看执行的日志,正确执行的情况下是一直会更新日志的


本站墙裂推荐,便宜好用的云服务器,点这儿购买
LIZHI_STORE
如果觉得我的文章对你有用,请随意赞赏