提交 e0f57343 authored 作者: 陈泽健's avatar 陈泽健

Merge remote-tracking branch 'origin/develop' into develop

......@@ -131,7 +131,8 @@
"Bash(sed -i '/^[[:space:]]*TARGET_KEY=/d' check_deleted_file_ubains.sh)",
"Bash(check_deleted_file_ubains_header.tmp:*)",
"Bash(mv check_deleted_file_ubains_header.tmp check_deleted_file_ubains.sh)",
"Bash(chmod +x check_deleted_file_ubains.sh)"
"Bash(chmod +x check_deleted_file_ubains.sh)",
"Bash(bash -n \"E:\\\\ubains-module-test\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\预定系统\\\\一键更新\\\\update_cron_jobs.sh\")"
]
}
}
# 定时任务脚本一键更新工具 - 使用说明
> 版本:V1.3
> 更新日期:2026-03-30
> 脚本文件:`update_cron_jobs.sh`
> **更新日志**:
> - **V1.3 (2026-03-30)**:
> - 修复crontab重复问题(改进grep过滤模式)
> - 添加废弃脚本清理功能(自动清理旧版本脚本文件)
> - 修复SCP命令缺少连接复用选项的问题
> - **V1.2 (2026-03-30)**:
> - 添加SSH连接复用(ControlMaster)减少密码输入次数
> - 所有SSH/SCP调用统一使用连接复用选项
> - **V1.1 (2026-03-30)**:
> - 修复版本提取逻辑(使用sed代替awk正确提取中文版本号)
> - 修复远程更新输出解析(正确捕获并处理更新结果)
> - 移除重复的远程更新代码块
> - 更新所有定时脚本版本号(+0.1)
---
## 快速开始
### 本地更新(最常用)
```bash
cd 自动化部署脚本/x86架构/预定系统/一键更新
./update_cron_jobs.sh
```
### 远程更新服务器
```bash
./update_cron_jobs.sh --host 192.168.1.100 --user root
```
---
## 命令参数
| 参数 | 说明 | 示例 |
|------|------|------|
| `--host <IP>` | 远程服务器地址 | `--host 192.168.1.100` |
| `--user <用户>` | SSH用户名(默认root) | `--user admin` |
| `--batch <文件>` | 批量更新服务器列表 | `--batch servers.txt` |
| `--confirm` | 执行前确认 | `--confirm` |
| `--dry-run` | 干运行(仅检查不更新) | `--dry-run` |
| `--rollback` | 回滚到上一版本 | `--rollback` |
| `--help` | 显示帮助信息 | `--help` |
---
## 使用场景
### 场景1:更新单台本地服务器
```bash
./update_cron_jobs.sh
```
### 场景2:更新单台远程服务器
```bash
./update_cron_jobs.sh --host 192.168.1.100 --user root
```
### 场景3:批量更新多台服务器
```bash
# 1. 创建服务器列表文件
cat > servers.txt << EOF
192.168.1.100:root:password
192.168.1.101:root:password
192.168.1.102:root:password
EOF
# 2. 执行批量更新
./update_cron_jobs.sh --batch servers.txt
```
### 场景4:确认模式更新(推荐)
```bash
./update_cron_jobs.sh --host 192.168.1.100 --confirm
```
### 场景5:仅检查不更新
```bash
./update_cron_jobs.sh --dry-run
```
### 场景6:更新失败回滚
```bash
./update_cron_jobs.sh --rollback
```
---
## 更新内容
### 脚本列表
| 序号 | 脚本名称 | 版本 | 说明 |
|-----|---------|------|------|
| 1 | monitor_emqx_service.sh | V2.2 | EMQX服务监控 |
| 2 | monitor_mysql_service.sh | V1.2 | MySQL服务监控 |
| 3 | monitor_redis_service.sh | V1.2 | Redis服务监控 |
| 4 | monitor_external_api_services_v2.sh | V1.2 | 外部API服务监控 |
| 5 | monitor_inner_api_services.sh | V1.2 | 内部API服务监控 |
| 6 | backup_mysql_databases.sh | V1.1 | MySQL数据库备份 |
| 7 | backup_mysql_logs.sh | V1.2 | MySQL日志备份 |
| 8 | backup_nginx_logs.sh | V1.2 | Nginx日志备份 |
| 9 | auto_clean_deleted_ubains_v3.sh | V3.1 | 已删除文件清理 |
### 自动更新内容
- ✅ 脚本文件替换
- ✅ 执行权限设置(755)
- ✅ Crontab配置更新(10分钟间隔)
- ✅ 日志轮转机制(5MB轮转、保留30天)
- ✅ PID锁机制(防止并发执行)
- ✅ 自动清理废弃脚本文件(如 clean_deleted_ubains_v2.sh)
---
## Crontab 配置说明
### 更新后的定时任务
```bash
# 监控类:每 10 分钟执行,错峰间隔 1 分钟
*/10 * * * * /opt/scripts/monitor_emqx_service.sh # 0, 10, 20...
*/10 * * * * sleep 60 && /opt/scripts/monitor_mysql_service.sh # 1, 11, 21...
*/10 * * * * sleep 120 && /opt/scripts/monitor_redis_service.sh # 2, 12, 22...
*/10 * * * * sleep 180 && /opt/scripts/monitor_external_api_services_v2.sh # 3, 13, 23...
*/10 * * * * sleep 240 && /opt/scripts/monitor_inner_api_services.sh # 4, 14, 24...
# 备份类:每日凌晨执行
0 1 * * * /opt/scripts/backup_mysql_databases.sh
0 2 * * * /opt/scripts/backup_mysql_logs.sh
0 3 * * * /opt/scripts/backup_nginx_logs.sh
# 维护类:每日凌晨执行
0 4 * * * /opt/scripts/auto_clean_deleted_ubains_v3.sh
```
---
## 自动备份机制
### 备份位置
```
/opt/scripts/backup/
├── 20260330_120000/
│ ├── monitor_emqx_service.sh.backup
│ ├── monitor_mysql_service.sh.backup
│ ├── crontab.backup
│ └── metadata.txt
└── 20260329_150000/
└── ...
```
### 备份保留期
- 自动清理超过 **7天** 的备份
- 保留最新的备份用于回滚
---
## 更新报告
### 报告位置
```
/var/log/scripts/update_report_YYYYMMDD_HHMMSS.txt
```
### 报告内容
- 更新时间
- 更新服务器
- 更新统计(成功/失败数量)
- 脚本版本列表
- 更新成功/失败列表
- 备份位置
---
## 故障排查
### 问题1:远程更新需要多次输入密码
```bash
# 说明:首次SSH连接时需要输入密码,后续会复用连接(ControlMaster)
# 连接复用有效期:300秒(5分钟)
# 如需完全免密,建议配置SSH密钥认证
ssh-keygen -t rsa -b 4096
ssh-copy-id root@192.168.1.100
```
### 问题2:连接远程服务器失败
```bash
# 检查SSH连接
ssh root@192.168.1.100 "echo 'ping'"
# 检查防火墙
telnet 192.168.1.100 22
```
### 问题3:crontab出现重复任务
```bash
# V1.3版本已自动修复此问题,如仍有重复可手动清理:
crontab -l | grep -vE "(/opt/scripts/预定系统|/opt/scripts/monitor_|/opt/scripts/backup_|# ========== .*类|# ============================================)" > /tmp/crontab_clean.tmp
crontab /tmp/crontab_clean.tmp
# 重新运行更新脚本
./update_cron_jobs.sh --host 192.168.5.47 --user root
```
### 问题4:权限不足
```bash
# 确保有执行权限
chmod +x update_cron_jobs.sh
# 确保目标目录可写
ls -ld /opt/scripts
```
### 问题5:更新失败回滚
```bash
# 查看备份目录
ls -lt /opt/scripts/backup/
# 手动回滚
./update_cron_jobs.sh --rollback
```
### 问题6:查看更新日志
```bash
# 查看更新日志
tail -f /var/log/scripts/update_cron_jobs.log
# 查看最新报告
ls -lt /var/log/scripts/update_report_*
cat /var/log/scripts/update_report_*.txt | tail -1
```
---
## 目录结构
```
预定系统一键更新/
├── update_cron_jobs.sh # 主更新脚本
└── 使用说明.md # 本文档
```
---
## 注意事项
1. **执行权限**:确保脚本有执行权限(`chmod +x`
2. **脚本路径**:确保定时脚本目录正确(`../定时脚本`
3. **网络连接**:远程更新前确保SSH连接正常
4. **备份保留**:更新前会自动备份,7天后自动清理
5. **版本验证**:更新失败会自动回滚,请查看日志确认结果
---
## 技术支持
如遇问题,请提供以下信息:
1. 错误日志:`/var/log/scripts/update_cron_jobs.log`
2. 更新报告:`/var/log/scripts/update_report_*.txt`
3. 备份位置:`/opt/scripts/backup/`
4. 脚本版本:`./update_cron_jobs.sh --help`
---
**文档结束**
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:auto_clean_deleted_ubains_v3.sh
# 功能描述:已删除大文件自动清理与容器重启脚本
# 版本:V3.0
# 版本:V3.1
# 创建日期:2026-01-27
# 更新日期:2026-03-30
#
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:backup_mysql_databases.sh
# 功能描述:MySQL数据库定时备份脚本
# 版本:V1.0
# 版本:V1.1
# 创建日期:2026-01-27
# 基于文档:_PRD_预定系统_MySQL数据库备份需求文档.md
#
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:backup_mysql_logs.sh
# 功能描述:MySQL日志文件定时备份与压缩脚本
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-01-27
# 更新日期:2026-03-30
# 基于文档:_PRD_预定系统_MySQL日志备份需求文档.md
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:backup_nginx_logs.sh
# 功能描述:Nginx日志文件定时备份与压缩脚本
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-01-27
# 更新日期:2026-03-30
# 基于文档:_PRD_预定系统_Nginx日志备份需求文档.md
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:check_deleted_file_ubains.sh
# 功能描述:已删除但仍被占用文件排查工具(内核直读版)
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-02-28
# 更新日期:2026-03-30
#
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:monitor_emqx_service.sh
# 功能描述:EMQX 服务监测与自愈脚本 (增强版)
# 版本:V2.1
# 版本:V2.2
# 创建日期:2026-01-27
# 修改日期:2026-03-30
# 基于文档:_PRD_预定系统_EMQX 服务监控需求文档.md V2.1
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:monitor_external_api_services_v2.sh
# 功能描述:外部API服务监测与自愈脚本
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-01-27
# 更新日期:2026-03-30
# 基于文档:_PRD_预定系统外部API服务监控需求文档.md (V1.1)
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:monitor_inner_api_services.sh
# 功能描述:预定系统后端服务监测与自愈脚本
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-01-27
# 更新日期:2026-03-30
# 基于文档:_PRD_预定系统后端服务监测需求文档.md (V1.1)
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:monitor_mysql_service.sh
# 功能描述:MySQL服务监测与自愈脚本
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-01-27
# 更新日期:2026-03-30
# 基于文档:_PRD_预定系统_MySQL服务监控需求文档.md (V1.1)
......
......@@ -3,7 +3,7 @@
#===============================================================================
# 脚本名称:monitor_redis_service.sh
# 功能描述:Redis服务监测与自愈脚本
# 版本:V1.1
# 版本:V1.2
# 创建日期:2026-01-27
# 更新日期:2026-03-30
# 基于文档:_PRD_预定系统_Redis服务监控需求文档.md (V1.1)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论