# 超星数据同步定时任务配置说明 ## 📋 概述 本目录包含超星数据同步的定时任务配置,用于每天晚上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**: 初始版本,创建定时任务配置