Files
doclink_web/stop.sh
2026-04-13 20:43:44 +07:00

58 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PID_FILE="$ROOT_DIR/.doclink-web.pid"
PORT="${1:-${PORT:-}}"
stop_by_pid() {
local pid="$1"
if [[ -z "${pid:-}" ]]; then
return 1
fi
if kill -0 "$pid" 2>/dev/null; then
kill "$pid"
echo "Stopped DocLink Web process $pid"
return 0
fi
echo "Process $pid is not running anymore."
return 0
}
if [[ -n "${PORT:-}" ]]; then
if command -v lsof >/dev/null 2>&1; then
PIDS="$(lsof -ti tcp:"$PORT" 2>/dev/null || true)"
if [[ -n "${PIDS:-}" ]]; then
for PID in $PIDS; do
stop_by_pid "$PID"
done
rm -f "$PID_FILE"
exit 0
fi
fi
echo "No process found listening on port $PORT."
fi
if [[ ! -f "$PID_FILE" ]]; then
echo "No pid file found. If the server is running in another terminal, stop it with Ctrl+C."
exit 0
fi
PID="$(cat "$PID_FILE" 2>/dev/null || true)"
if [[ -z "${PID:-}" ]]; then
rm -f "$PID_FILE"
echo "Pid file was empty. Removed it."
exit 0
fi
if kill -0 "$PID" 2>/dev/null; then
kill "$PID"
echo "Stopped DocLink Web process $PID"
else
echo "Process $PID is not running anymore."
fi
rm -f "$PID_FILE"