58 lines
1.2 KiB
Bash
Executable File
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"
|