37 lines
808 B
Bash
Executable file
37 lines
808 B
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PORT="${1:-8081}"
|
|
|
|
# Finde Prozesse auf Port
|
|
PIDS=$(lsof -ti ":$PORT" 2>/dev/null || true)
|
|
|
|
if [ -n "$PIDS" ]; then
|
|
# Graceful shutdown attempt
|
|
echo "$PIDS" | while read -r pid; do
|
|
kill -TERM "$pid" 2>/dev/null || true
|
|
done
|
|
# Warte bis zu 5 Sekunden
|
|
for i in $(seq 1 10); do
|
|
STILL_RUNNING=0
|
|
for pid in $PIDS; do
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
STILL_RUNNING=1
|
|
break
|
|
fi
|
|
done
|
|
if [ "$STILL_RUNNING" = "0" ]; then
|
|
break
|
|
fi
|
|
sleep 0.5
|
|
done
|
|
# Force kill if still running
|
|
for pid in $PIDS; do
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
fi
|
|
done
|
|
echo "Prozesse auf port $PORT beendet."
|
|
else
|
|
echo "Keine laufende Instanz auf port $PORT gefunden."
|
|
fi
|