fix(deploy): restart 脚本 lsof 只取 LISTEN 态进程

2026-09-12 部署实测:lsof -ti tcp:PORT 返回该端口上所有 socket 的
进程——包括 BFF 到 8098/8094 的已建立连接,不只监听者。kill 多行
PID 时旧进程存活、新进程绑定失败静默退出(vstore 报 address already
in use;生信 restart 后仍是旧进程)。改 -sTCP:LISTEN 只取监听者,
kill 不再加引号(多 PID 需分词)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-12 18:22:11 +08:00
co-authored by Claude Fable 5
parent 36fc2a7250
commit 7037a1d5d8
2 changed files with 4 additions and 4 deletions
+2 -2
View File
@@ -15,12 +15,12 @@ HOST="${BIOFLOW_BIND_HOST:-127.0.0.1}"
APP_MODULE="app.main:app"
PID=""
if command -v lsof >/dev/null 2>&1; then
PID="$(lsof -ti tcp:"$PORT" 2>/dev/null || true)"
PID="$(lsof -ti tcp:"$PORT" -sTCP:LISTEN 2>/dev/null || true)"
fi
if [[ -n "$PID" ]]; then
echo "[restart] 停止 8098 旧进程 pid=$PID"
kill "$PID" 2>/dev/null || true
kill $PID 2>/dev/null || true
sleep 2
fi
+2 -2
View File
@@ -17,8 +17,8 @@ HOST="${VSTORE_BIND_HOST:-127.0.0.1}"
# 杀旧进程([v]store 正则技巧防 pkill 自匹配;端口优先精确)
if command -v lsof >/dev/null 2>&1; then
OLD_PID="$(lsof -ti tcp:"$PORT" 2>/dev/null || true)"
[ -n "$OLD_PID" ] && kill "$OLD_PID" 2>/dev/null || true
OLD_PID="$(lsof -ti tcp:"$PORT" -sTCP:LISTEN 2>/dev/null || true)"
[ -n "$OLD_PID" ] && kill $OLD_PID 2>/dev/null || true
else
pkill -f "[v]store.api:app" 2>/dev/null || true
fi