diff options
| author | haoyuren <13851610112@163.com> | 2026-03-29 15:07:43 -0500 |
|---|---|---|
| committer | haoyuren <13851610112@163.com> | 2026-03-29 15:07:43 -0500 |
| commit | ddd1fae455e9bac778088a54b7a694781b3508e2 (patch) | |
| tree | eb970e13ee51fab48bad86969b8e77ea5af9c504 /cron_runner.sh | |
Claude Bridge Worker - one-click setup for remote Claude Code workers
Diffstat (limited to 'cron_runner.sh')
| -rwxr-xr-x | cron_runner.sh | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/cron_runner.sh b/cron_runner.sh new file mode 100755 index 0000000..397b25b --- /dev/null +++ b/cron_runner.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# Claude Bridge Worker - Cron Runner +# 由 setup.sh 生成实际路径,这里用占位符 +# 功能: 1) 健康检查+自动重启 2) 任务通知 3) 命令执行 + +export PATH="$HOME/miniconda3/bin:$HOME/.local/bin:/usr/bin:/bin:$PATH" + +BRIDGE_DIR="${CLAUDE_BRIDGE_DIR:-$HOME/claude-bridge}" +cd "$BRIDGE_DIR" || exit 1 +source .env 2>/dev/null +export BROKER_URL API_SECRET + +AUTH="Authorization: Bearer $API_SECRET" +SESSIONS_FILE="$BRIDGE_DIR/.sessions" # 每行: session_name project_dir + +# === 健康检查 + 自动重启 === +if [ -f "$SESSIONS_FILE" ]; then + while IFS=$'\t' read -r SESSION_NAME PROJECT_DIR; do + [ -z "$SESSION_NAME" ] && continue + + if ! tmux has-session -t "$SESSION_NAME" 2>/dev/null; then + echo "$(date): Session $SESSION_NAME 不存在,重新创建..." + + # 重建 tmux session + tmux new-session -d -s "$SESSION_NAME" + if [ -n "$PROJECT_DIR" ] && [ -d "$PROJECT_DIR" ]; then + tmux send-keys -t "$SESSION_NAME" "cd $PROJECT_DIR" Enter + sleep 1 + fi + tmux send-keys -t "$SESSION_NAME" "claude --continue" Enter + + # 通知 manager + curl -sf -X POST \ + -H "$AUTH" \ + -H "Content-Type: application/json" \ + -d "{\"source\": \"system\", \"message\": \"Worker $SESSION_NAME ($(hostname)) 被系统杀掉后已自动重启,工作目录: ${PROJECT_DIR:-$HOME}\"}" \ + "$BROKER_URL/log" 2>/dev/null || true + + echo "$(date): Session $SESSION_NAME 已重启并通知 manager" + fi + done < "$SESSIONS_FILE" +fi + +# === 任务通知 + 命令执行 (每15秒一轮,共4轮) === +for i in 0 1 2 3; 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 + [ $i -lt 3 ] && sleep 15 +done |
