当前位置: 首页 > news >正文

自动拉取 GitHub 仓库更新的脚本

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验

由于将 HAUE-CS-WIKI 部署到了我自己的服务器上作为国内镜像站,每次在源站更新后都需要手动拉取镜像站的更新实在是太麻烦了,因此产生了编写该脚本的需求(

读者可根据该脚本思路编写属于你自己的定时任务脚本。


脚本思路


  • 编写脚本文件,能够执行 git pull 命令以及 mkdocs build 构建命令。
  • 对这些命令的执行结果和状态需要保存到相应的日志,以便查询执行状态。
  • 利用 cron 守护进程实现定时执行该脚本文件。

编写脚本文件


#!/bin/bash# 读取用户环境变量
. /etc/profile
source /root/.bashrc
source /root/.profile# 日志文件路径
LOG_FILE="/wiki/log/update.log"
ERROR_LOG_FILE="/wiki/log/error.log"# 任务执行时间
update_time=$(date +"%Y-%m-%d %H:%M:%S")# 进入 haue-cs-wiki 目录
cd /wiki/haue-cs-wiki# 执行 git pull 操作
git_pull_output=$(git pull 2>&1)
git_pull_status=$?if [ $git_pull_status -eq 0 ]; thenecho -e "$update_time: git pull successfully 🤗" >> "$LOG_FILE"
elseecho -e "$update_time: git pull failed 🥵\n Error: $git_pull_output" >> "$ERROR_LOG_FILE"
fi# 执行 mkdocs 构建
mk_build_output=$(mkdocs build 2>&1)
mk_build_status=$?if [ $mk_build_status -eq 0 ]; thenecho -e "$update_time: mkdocs build successfully 😎\n" >> "$LOG_FILE"
elseecho -e "$update_time: mkdocs build failed 🤡\n Error: $mk_build_output" >> "$ERROR_LOG_FILE"
fi

注意

  • 所有的文件目录均需要指定为绝对路径,防止脚本执行路径出错。
  • 由于后续 cron 定时任务执行时,不会携带用户的环境变量,因此在脚本中需要读入相应用户的配置文件和环境变量。

设置 cron 定时任务


使用 crontab -e 打开定时任务注册表

第一次使用会提示选择需要使用的编辑器,选择适合自己的即可。

在注册表中编辑:

0 0 * * * /bin/bash /path/script.sh

其中 /path/script.sh 为执行脚本文件所在的绝对路径。

对于执行时间的设置,在 crontab 文件中,时间表达式由五个 * * * * * 字段组成,分别表示分钟、小时、日期、月份和星期几。

对于时间表达式 * * * * *,每个字段的含义如下:

  1. 第一个字段:分钟(取值范围:0-59)

    • * 表示每分钟都匹配,即每分钟触发任务。
  2. 第二个字段:小时(取值范围:0-23)

    • * 表示每小时都匹配,即每小时触发任务。
  3. 第三个字段:日期(取值范围:1-31)

    • * 表示每天都匹配,即每天触发任务。
  4. 第四个字段:月份(取值范围:1-12)

    • * 表示每个月都匹配,即每个月触发任务。
  5. 第五个字段:星期几(取值范围:0-6,其中 0 表示星期日)

    • * 表示每个星期都匹配,即每个星期触发任务。

例如:设置为 0 0 * * * 表示每天 0:00 执行一次该定时任务。

http://www.lryc.cn/news/130659.html

相关文章:

  • 如何获得Android 14复活节彩蛋
  • 国产32位单片机XL32F001,带1 路 12bit ADC,I2C、SPI、USART 等外设
  • typescript基础之null和undefined
  • php_mb_strlen指定扩展
  • 利用OpenCV光流算法实现视频特征点跟踪
  • 探索无限创造力的星辰大道,画出想象的浩瀚宇宙!-turtle
  • 企业数字化转型大数据湖一体化平台项目建设方案PPT
  • 【3Ds Max】车削命令的简单使用(以制作花瓶为例)
  • Python 3 使用HBase 总结
  • Maven方式构建SpringBoot项目
  • 不花一分钱,利用免费电脑软件将视频MV变成歌曲音频MP3
  • 运营知识之用户运营(一)触达用户的几种方式
  • cocos creator pageView 循环展示 广告牌功能
  • PyTorch Lightning:通过分布式训练扩展深度学习工作流
  • 无涯教程-Perl - splice函数
  • 归并排序:从二路到多路
  • 【Vue】运行项目报错 This dependency was not found
  • Shell编程之正则表达式
  • QGraphicsView 实例3地图浏览器
  • Windows基础安全知识
  • 自定义注解和自定义注解处理器来扫描所有带有某个特定注解的Controller层
  • 浏览器渲染原理 - 输入url 回车后发生了什么
  • 大文本的全文检索方案附件索引
  • 35_windows环境debug Nginx 源码-CLion配置CMake和启动
  • 收集的一些比较好的git网址
  • 容斥原理 博弈论(多种Nim游戏解法)
  • 【C++】函数指针
  • VBA技术资料MF45:VBA_在Excel中自定义行高
  • 【Git】Git中的钩子
  • java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发 em