205 lines
4.7 KiB
Markdown
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**: 初始版本,创建定时任务配置
|
|
|