Files
hzdyjs/超星数据移植与定时同步/README_定时任务.md
T
2025-11-13 18:07:07 +08:00

205 lines
4.7 KiB
Markdown

# 超星数据同步定时任务配置说明
## 📋 概述
本目录包含超星数据同步的定时任务配置,用于每天晚上12点开始自动执行数据同步脚本,每个脚本间隔5分钟执行。
## 🕐 执行时间表
| 时间 | 脚本 | 说明 |
|------|------|------|
| 00:00 | 请求系部信息API.py | 同步系部数据 |
| 00:05 | 请求专业信息API.py | 同步专业数据 |
| 00:10 | 请求班级信息API.py | 同步班级数据 |
| 00:15 | 请求学生信息API.py | 同步学生数据 |
| 00:20 | 请求学籍异动信息API.py | 同步学籍异动数据 |
## 📁 文件说明
### 1. `crontab_config.txt`
- **说明**: crontab定时任务配置文件
- **内容**: 包含5个定时任务配置,每个任务对应一个数据同步脚本
### 2. `run_script.sh`
- **说明**: 脚本启动器,用于执行Python脚本并记录日志
- **功能**:
- 自动切换到脚本目录
- 创建日志目录
- 记录执行日志和错误日志
- 按日期和脚本名生成日志文件
### 3. `logs/` 目录
- **说明**: 日志文件存储目录(自动创建)
- **日志文件格式**:
- 标准日志: `{脚本名}_{日期}.log`
- 错误日志: `{脚本名}_error_{日期}.log`
- Cron日志: `cron_{脚本名}.log`
## 🚀 安装步骤
### 步骤1: 赋予执行权限
```bash
cd /Users/wuzilong/work/00code/hzdyjs_xg/超星数据移植与定时同步
chmod +x run_script.sh
```
### 步骤2: 测试脚本执行
手动测试启动脚本是否正常工作:
```bash
# 测试执行系部信息脚本
./run_script.sh 请求系部信息API
# 查看日志
ls -lh logs/
tail -f logs/请求系部信息API_$(date +%Y%m%d).log
```
### 步骤3: 安装crontab配置
```bash
# 安装crontab配置
crontab crontab_config.txt
# 验证安装(查看当前crontab任务)
crontab -l
```
### 步骤4: 验证cron服务
确保cron服务正在运行:
```bash
# macOS系统
sudo launchctl list | grep cron
# 或者检查cron服务状态
ps aux | grep cron
```
## 📊 日志管理
### 查看日志
```bash
# 查看今天的系部信息同步日志
tail -f logs/请求系部信息API_$(date +%Y%m%d).log
# 查看错误日志
tail -f logs/请求系部信息API_error_$(date +%Y%m%d).log
# 查看cron执行日志
tail -f logs/cron_请求系部信息API.log
```
### 日志清理
建议定期清理旧日志文件(保留最近30天):
```bash
# 清理30天前的日志
find logs/ -name "*.log" -mtime +30 -delete
```
## 🔧 配置调整
### 修改执行时间
编辑 `crontab_config.txt` 文件,修改时间配置:
```bash
# crontab时间格式:分钟 小时 日 月 星期
# 例如:每天凌晨1点执行
0 1 * * * /bin/bash /path/to/run_script.sh 请求系部信息API
```
### 修改Python解释器
如果使用虚拟环境,编辑 `run_script.sh` 文件:
```bash
# 修改PYTHON_CMD变量
PYTHON_CMD="/path/to/venv/bin/python3"
```
### 修改日志路径
编辑 `run_script.sh` 文件中的 `LOG_DIR` 变量:
```bash
LOG_DIR="/path/to/custom/logs"
```
## 🛠️ 常用命令
### 查看当前crontab任务
```bash
crontab -l
```
### 编辑crontab任务
```bash
crontab -e
```
### 删除所有crontab任务
```bash
crontab -r
```
### 临时禁用某个任务
在 `crontab_config.txt` 中对应行前添加 `#` 注释,然后重新安装:
```bash
crontab crontab_config.txt
```
### 手动执行某个脚本
```bash
# 直接执行Python脚本
python3 请求系部信息API.py
# 或使用启动脚本
./run_script.sh 请求系部信息API
```
## ⚠️ 注意事项
1. **路径问题**: 确保 `crontab_config.txt` 中的路径是绝对路径
2. **权限问题**: 确保 `run_script.sh` 有执行权限
3. **Python环境**: 确保cron执行时能找到正确的Python解释器
4. **日志目录**: 确保有权限创建和写入日志目录
5. **网络连接**: 确保服务器能访问超星API接口
6. **数据库连接**: 确保数据库配置正确且可访问
## 🐛 故障排查
### 问题1: 脚本未执行
**检查步骤**:
1. 查看cron日志: `tail -f /var/log/cron.log` (Linux) 或系统日志 (macOS)
2. 检查crontab任务: `crontab -l`
3. 检查脚本权限: `ls -l run_script.sh`
4. 手动执行测试: `./run_script.sh 请求系部信息API`
### 问题2: 脚本执行失败
**检查步骤**:
1. 查看错误日志: `tail -f logs/*_error_*.log`
2. 查看标准日志: `tail -f logs/*.log`
3. 检查Python环境: `which python3`
4. 检查依赖包: `pip3 list | grep -E "pymysql|requests|pycryptodome"`
### 问题3: 日志文件未生成
**检查步骤**:
1. 检查目录权限: `ls -ld logs/`
2. 检查磁盘空间: `df -h`
3. 手动创建日志目录: `mkdir -p logs/`
## 📝 更新记录
- **2025-01-03**: 初始版本,创建定时任务配置