53 lines
1.3 KiB
Bash
53 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
# 停止宿主机模式进程
|
|
# shellcheck disable=SC1091
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
# shellcheck source=common.sh
|
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh"
|
|
|
|
c_info "停止宿主机模式服务..."
|
|
|
|
stop_pidfile() {
|
|
local name="$1"
|
|
local f="$PID_DIR/$name.pid"
|
|
if [[ -f "$f" ]]; then
|
|
local pid
|
|
pid="$(cat "$f")"
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
kill "$pid" 2>/dev/null || true
|
|
sleep 0.3
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
fi
|
|
rm -f "$f"
|
|
fi
|
|
}
|
|
|
|
for n in web gateway ai platform; do
|
|
stop_pidfile "$n"
|
|
done
|
|
|
|
for port in 5173 8180 8001 8888; do
|
|
if have_cmd fuser; then
|
|
fuser -k "${port}/tcp" >/dev/null 2>&1 || true
|
|
elif have_cmd lsof; then
|
|
pids="$(lsof -t -iTCP:"$port" -sTCP:LISTEN 2>/dev/null || true)"
|
|
[[ -n "$pids" ]] && kill $pids 2>/dev/null || true
|
|
fi
|
|
done
|
|
|
|
if [[ "${1:-}" == "--with-db" ]]; then
|
|
pg_ctl_bin="$(command -v pg_ctl 2>/dev/null || true)"
|
|
if [[ -z "$pg_ctl_bin" ]]; then
|
|
for d in /usr/lib/postgresql/*/bin /usr/pgsql-*/bin; do
|
|
[[ -x "$d/pg_ctl" ]] && pg_ctl_bin="$d/pg_ctl" && break
|
|
done
|
|
fi
|
|
if [[ -n "$pg_ctl_bin" && -f "$PGDATA/PG_VERSION" ]]; then
|
|
"$pg_ctl_bin" -D "$PGDATA" stop -m fast || true
|
|
fi
|
|
fi
|
|
|
|
c_ok "已停止。数据仍在: $RUNTIME"
|