mac启动停止脚本
This commit is contained in:
1 parent
ccfdac2e1b
commit
ed0f20b754
2 files changed
+103
No files matched your search
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
PORT=3000
|
||||
PID_FILE="$ROOT/logs/dev.pid"
|
||||
|
||||
cd "$ROOT"
|
||||
|
||||
PIDS="$(lsof -tiTCP:"$PORT" -sTCP:LISTEN 2>/dev/null || true)"
|
||||
if [[ -z "$PIDS" ]]; then
|
||||
rm -f "$PID_FILE"
|
||||
echo "PicHost 未运行。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for pid in $PIDS; do
|
||||
command_line="$(ps -o command= -p "$pid" 2>/dev/null || true)"
|
||||
cwd="$(lsof -a -p "$pid" -d cwd -Fn 2>/dev/null | sed -n 's/^n//p' | head -n 1)"
|
||||
if [[ "$command_line" != *"$ROOT"* && "$cwd" != "$ROOT" ]]; then
|
||||
echo "端口 $PORT 属于其他程序,已取消停止。"
|
||||
exit 1
|
||||
fi
|
||||
kill "$pid" 2>/dev/null || true
|
||||
done
|
||||
|
||||
for _ in {1..20}; do
|
||||
if ! lsof -tiTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
if lsof -tiTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
|
||||
for pid in $(lsof -tiTCP:"$PORT" -sTCP:LISTEN 2>/dev/null || true); do
|
||||
kill -9 "$pid" 2>/dev/null || true
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -f "$PID_FILE" ]]; then
|
||||
kill "$(cat "$PID_FILE")" 2>/dev/null || true
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
|
||||
echo "PicHost 已停止。"
|
||||
Reference in new issue
Block a user