深色模式
批量执行
一条命令跑数十台服务器,Reeve 提供 Parallel / Serial / Rolling 三种执行模式 + 三种结果视图 + AI 生成命令辅助。
进入
主界面左侧导航 → 批量执行。
操作流程
1. 选择服务器
左侧服务器面板:
- 勾选多台服务器
- 分组「全选」按钮
- 标签过滤
- 排除单台
2. 输入命令
中央命令框:
- 普通 shell 命令(
df -h/systemctl status nginx等) - 多行脚本(自动 Base64 包装,避免引号转义)
- 超时秒数(默认 30s,最大 600s)
- 「失败即停」开关
3. AI 生成命令(可选)
命令框右上 ✨ 按钮:
- 用自然语言描述你要做的事(如「检查每台机器的内存使用率」)
- LLM 翻译成合适的 shell 命令
- 你审阅后再点执行
需先在设置 → AI API Profile配。
4. 选择执行模式
| 模式 | 行为 | 适合场景 |
|---|---|---|
| Parallel | 全部并行启动,先完先返回 | 只读探测(看磁盘 / 进程) |
| Serial | 一台跑完再下一台 | 强依赖顺序的部署 |
| Rolling | 分批 N 台一组并行,组之间串行 | 滚动升级、保留服务能力 |
Rolling 模式需配置「批次大小」(默认 3)。
5. 执行
点 执行 → 进度条显示:
- 已派发任务 / 已完成 / 进行中
- 单台耗时
- 总耗时
可随时 Stop 取消:
- 已派发的任务继续跑(已经在远端 fork)
- 未派发的任务标记
cancelled
结果视图
三种视图切换(顶部 Tab):
Timeline(时间轴表格)
按发起顺序展示:
| 服务器 | 状态 | 退出码 | 耗时 | stdout 预览 |
|---|---|---|---|---|
| prod-1 | ✅ | 0 | 1.2s | /dev/sda1 67% |
| prod-2 | ✅ | 0 | 0.9s | /dev/sda1 82% |
| prod-3 | ❌ | 124 | 30s | (timeout) |
点行展开查看完整输出。
Sidebyside(并排终端)
每台服务器一个迷你终端窗口:
- 4 列网格
- 实时刷新输出
- 鼠标悬停看完整
- 适合"我要边跑边看"
Deduped(去重结果)
相同输出合并:
| 输出 | 服务器列表 |
|---|---|
/dev/sda1 67% | prod-1, prod-2, prod-4 |
/dev/sda1 82% | prod-3 |
适合"发现 outlier"。
状态筛选
结果区域顶部:
- 仅看成功
- 仅看失败
- 仅看超时
- 仅看取消
主机名搜索
实时按服务器别名过滤结果。
工具类别过滤
如果你跑了多种类型的工具调用(如混合了 ssh_ / db_ / sftp_):
- ssh_*
- db_*
- sftp_*
- other
结果导出
- CSV 导出:全部结果含状态、退出码、stdout、stderr
- JSON 导出:原始结构化数据
- 保存为 Runbook:当前命令 + 服务器集合保存为可重放的项目空间 Runbook
安全:AI 接入时的批量执行
如果是 AI 调 ssh_exec_multi:
- 每台服务器独立过策略引擎
- 任一台拒绝不影响其它放行
- 全部决策都写 audit_log
- 危险命令、sudo、敏感路径所有拦截一视同仁
典型场景
| 场景 | 命令示例 |
|---|---|
| 看所有机器磁盘 | df -h / |
| 看所有机器内存 | free -h | grep Mem |
| 查 nginx 版本 | nginx -v 2>&1 |
| 重启服务 | systemctl restart redis-server |
| 拉日志 | tail -n 100 /var/log/nginx/error.log |
| 批量更新 | apt-get update && apt-get upgrade -y |
故障排查
| 症状 | 排查 |
|---|---|
| 部分机器超时 | 加大超时时间;检查 SSH 连接稳定性 |
| Rolling 模式不前进 | 上一批有任务卡住;点 Stop 重来 |
| 输出截断 | Reeve 单任务输出上限 1 MiB;超出请用 SFTP 取文件 |
| AI 模式翻译不准 | 在自然语言里写得更具体;或自己写命令 |
下一步
- 项目空间 Runbook — 把批量任务固化下来
- 审计日志 — 查看批量执行的详细记录