thread-master/deploy/scripts/restart.sh

38 lines
1.2 KiB
Bash
Raw Normal View History

2026-07-13 01:15:30 +00:00
#!/usr/bin/env bash
# 只重編 + 重啟 gateway / worker / web不動 infra、不清資料、不 migrate
# 流程:殺舊 process → 確認埠釋放 → build → 起新的
set -euo pipefail
# shellcheck source=_common.sh
source "$(cd "$(dirname "$0")" && pwd)/_common.sh"
load_env
GATEWAY_PORT="${GATEWAY_PORT:-8888}"
WEB_PORT="${WEB_PORT:-5173}"
log "=== restart apps (keep data) ==="
log "1/3 stop old gateway / worker / web…"
set +e
"$DEPLOY_DIR/scripts/stop.sh"
stop_rc=$?
set -e
if [[ "$stop_rc" -ne 0 ]] || port_in_use "$GATEWAY_PORT"; then
leftovers="$(pids_on_port "$GATEWAY_PORT" | tr -s ' ')"
# 再掃一次 cmdline 給使用者可複製的 sudo
more="$(pids_by_cmdline_substr "bin/gateway" "gateway.yaml") $(pids_by_cmdline_substr "bin/worker" "gateway.yaml")"
all="$(echo "$leftovers $more" | tr -s ' ' '\n' | grep -E '^[0-9]+$' | sort -u | tr '\n' ' ')"
die "舊 process 沒殺乾淨,埠 :${GATEWAY_PORT} 仍被佔。請先:
sudo kill -9 ${all:-$(echo "$leftovers")}
make -C deploy restart"
fi
log "2/3 build…"
"$DEPLOY_DIR/scripts/build.sh"
log "3/3 start fresh…"
# start 內會再 stop 一次(雙保險)
"$DEPLOY_DIR/scripts/start.sh"
"$DEPLOY_DIR/scripts/status.sh" || true
log "=== restart done ==="