diff options
| author | haoyuren <13851610112@163.com> | 2026-03-29 15:55:43 -0500 |
|---|---|---|
| committer | haoyuren <13851610112@163.com> | 2026-03-29 15:55:43 -0500 |
| commit | 42f390b677f38cfd0fc30bb8d1a3278b5a072db4 (patch) | |
| tree | 8293cc59c7de570a7348cc4036976fc93c56f302 | |
| parent | f1d348b05a75a213141ac98c954a3e5d7677c0d0 (diff) | |
Add restart.sh for one-click recovery
| -rwxr-xr-x | restart.sh | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/restart.sh b/restart.sh new file mode 100755 index 0000000..678b090 --- /dev/null +++ b/restart.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# 一键重启所有 worker session + poller +set -euo pipefail + +BRIDGE_DIR="${CLAUDE_BRIDGE_DIR:-$HOME/claude-bridge}" +SESSIONS_FILE="$BRIDGE_DIR/.sessions" + +cd "$BRIDGE_DIR" +source .env 2>/dev/null +export BROKER_URL API_SECRET + +# 重启所有 session +if [ -f "$SESSIONS_FILE" ]; then + while IFS=$'\t' read -r SESSION PROJECT_DIR; do + [ -z "$SESSION" ] && continue + if tmux has-session -t "$SESSION" 2>/dev/null; then + echo "$SESSION 已在运行,跳过" + else + tmux new-session -d -s "$SESSION" + if [ -n "$PROJECT_DIR" ] && [ -d "$PROJECT_DIR" ]; then + tmux send-keys -t "$SESSION" "cd $PROJECT_DIR" Enter + sleep 1 + fi + tmux send-keys -t "$SESSION" "claude --continue" Enter + echo "$SESSION 已启动 (项目: $PROJECT_DIR)" + fi + done < "$SESSIONS_FILE" +else + echo "没有 .sessions 文件,跳过 session 创建" +fi + +# 杀掉旧 poller,启动新的 +pkill -f "poll_and_notify.sh" 2>/dev/null || true +pkill -f "execute_commands.sh" 2>/dev/null || true +sleep 1 +nohup bash -c "while true; do bash $BRIDGE_DIR/poll_and_notify.sh >> /tmp/claude-bridge.log 2>&1; bash $BRIDGE_DIR/execute_commands.sh >> /tmp/claude-bridge-cmd.log 2>&1; sleep 15; done" & +echo "poller 已启动 (PID: $!)" + +echo "完成。" |
