| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/bin/zsh
- # stop.sh — 停止传奇流水线管理系统
- # 用法: ./stop.sh 完全停止(停全部 Runner + 主进程)
- # ./stop.sh --pause 只关"自动执行"(Runner 继续跑, 系统在线)
- set -euo pipefail
- cd "$(dirname "$0")"
- if [[ "${1:-}" == "--pause" ]]; then
- curl -s -X POST localhost:8765/api/scheduler/config \
- -H 'Content-Type: application/json' \
- -d '{"configs":{"scheduler_enabled":"0"}}'
- echo
- echo "已暂停自动执行(正在跑的 Runner 不受影响; ./start.sh 后在界面重新打开开关即恢复)"
- exit 0
- fi
- # ① 停全部 Runner(业务路径收尾: run 记录/打勾文件完整)
- RUNNERS=$(pgrep -f "pbot.runner_cli" || true)
- if [[ -n "$RUNNERS" ]]; then
- echo "停止 Runner: $RUNNERS"
- curl -s -X POST localhost:8765/api/runners/stop-all && echo
- sleep 3
- # 兜底: 仍存活的直接 SIGTERM
- LEFT=$(pgrep -f "pbot.runner_cli" || true)
- [[ -n "$LEFT" ]] && echo "$LEFT" | xargs kill 2>/dev/null || true
- else
- echo "无 Runner 在跑"
- fi
- # ② 停主进程(优雅退出: 自动停调度器并 SIGTERM 残余子进程)
- MAIN=$(pgrep -f "pbot.db.serve" || true)
- if [[ -n "$MAIN" ]]; then
- echo "停止主进程: $MAIN"
- echo "$MAIN" | xargs kill 2>/dev/null || true
- sleep 2
- LEFT2=$(pgrep -f "pbot.db.serve" || true)
- [[ -n "$LEFT2" ]] && echo "$LEFT2" | xargs kill -9 2>/dev/null || true
- else
- echo "主进程未在运行"
- fi
- echo "已完全停止。剩余检查: $(pgrep -f 'pbot.db.serve|pbot.runner_cli' || echo '无')"
|