项目启停

This commit is contained in:
tianmo committed 2026-09-02 10:35:18 +08:00
1 parent 88cdcdfb02
commit 8c0e512333
2 files changed
+32 -11

No files matched your search

+10 -9
View File
@@ -8,22 +8,23 @@ PID_FILE="$RUN_DIR/spine-particle.pid"
cd "$PROJECT_DIR" || exit 1
if [[ ! -f "$PID_FILE" ]]; then
echo "没有发现由“启动项目.command”启动的项目进程。"
exit 0
SERVER_PID=""
if [[ -f "$PID_FILE" ]]; then SERVER_PID="$(tr -dc '0-9' < "$PID_FILE")"; fi
if [[ -z "$SERVER_PID" ]] || ! kill -0 "$SERVER_PID" 2>/dev/null; then
# 没有 PID 文件时,查找当前占用 5173 端口的服务。
SERVER_PID="$(lsof -tiTCP:5173 -sTCP:LISTEN 2>/dev/null | head -n 1)"
fi
SERVER_PID="$(tr -dc '0-9' < "$PID_FILE")"
if [[ -z "$SERVER_PID" ]] || ! kill -0 "$SERVER_PID" 2>/dev/null; then
if [[ -z "$SERVER_PID" ]]; then
rm -f "$PID_FILE"
echo "项目已经停止。"
exit 0
fi
SERVER_COMMAND="$(ps -p "$SERVER_PID" -o command= 2>/dev/null || true)"
if [[ "$SERVER_COMMAND" != *"$PROJECT_DIR/node_modules/vite/"* ]]; then
echo "PID 已被其他程序占用,为避免误关进程,本次未执行停止操作。"
echo "当前进程:$SERVER_COMMAND"
PROCESS_CWD="$(lsof -a -p "$SERVER_PID" -d cwd -Fn 2>/dev/null | sed -n 's/^n//p' | head -n 1)"
if [[ "$PROCESS_CWD" != "$PROJECT_DIR" ]]; then
echo "占用进程不属于当前项目,为避免误关,本次未执行停止操作。"
echo "进程目录:${PROCESS_CWD:-未知}"
rm -f "$PID_FILE"
read "?按回车键关闭窗口..."
exit 1