59 lines
1.4 KiB
Bash
Executable File
59 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ -f ".env_dev" ]]; then
|
|
set -a
|
|
source .env_dev
|
|
set +a
|
|
fi
|
|
|
|
APP_PORT="${APP_PORT:-3911}"
|
|
BACKEND_PORT="${BACKEND_PORT:-3002}"
|
|
API_PROXY_TARGET="${API_PROXY_TARGET:-http://127.0.0.1:${BACKEND_PORT}}"
|
|
export APP_PORT BACKEND_PORT API_PROXY_TARGET
|
|
export NEXT_TELEMETRY_DISABLED=1
|
|
|
|
kill_port_processes() {
|
|
local port="$1"
|
|
local pids=""
|
|
|
|
if command -v lsof >/dev/null 2>&1; then
|
|
pids="${pids}"$'\n'"$(lsof -tiTCP:"${port}" -sTCP:LISTEN 2>/dev/null || true)"
|
|
fi
|
|
|
|
if command -v fuser >/dev/null 2>&1; then
|
|
pids="${pids}"$'\n'"$(fuser -n tcp "${port}" 2>/dev/null | tr ' ' '\n' || true)"
|
|
fi
|
|
|
|
if command -v ss >/dev/null 2>&1; then
|
|
pids="${pids}"$'\n'"$(ss -ltnp "sport = :${port}" 2>/dev/null | grep -o 'pid=[0-9]*' | cut -d= -f2 || true)"
|
|
fi
|
|
|
|
pids="$(printf '%s\n' "${pids}" | sed '/^$/d' | sort -u)"
|
|
|
|
if [[ -z "${pids}" ]]; then
|
|
echo "Port ${port} ist frei."
|
|
return
|
|
fi
|
|
|
|
echo "Beende Prozess(e) auf Port ${port}: ${pids//$'\n'/ }"
|
|
kill ${pids} 2>/dev/null || true
|
|
sleep 1
|
|
|
|
local remaining=""
|
|
for pid in ${pids}; do
|
|
if kill -0 "${pid}" 2>/dev/null; then
|
|
remaining="${remaining} ${pid}"
|
|
fi
|
|
done
|
|
|
|
if [[ -n "${remaining}" ]]; then
|
|
echo "Erzwinge Stop für:${remaining}"
|
|
kill -9 ${remaining} 2>/dev/null || true
|
|
fi
|
|
}
|
|
|
|
kill_port_processes "${BACKEND_PORT}"
|
|
if [[ "${APP_PORT}" != "${BACKEND_PORT}" ]]; then
|
|
kill_port_processes "${APP_PORT}"
|
|
fi |