Script cleanup.
This commit is contained in:
34
tools/stop-server.sh
Executable file
34
tools/stop-server.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
# Stops any running Paper server (java process running a paper-*.jar).
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
STOP_TIMEOUT="${STOP_TIMEOUT:-60}"
|
||||
|
||||
SERVER_PIDS=$(pgrep -f "java.*paper-.*\.jar" || true)
|
||||
|
||||
if [[ -z "$SERVER_PIDS" ]]; then
|
||||
echo "Minecraft server is not running."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for pid in $SERVER_PIDS; do
|
||||
echo "Stopping Minecraft server (PID: $pid)..."
|
||||
# SIGTERM lets Paper run its shutdown hook and save worlds.
|
||||
kill "$pid"
|
||||
done
|
||||
|
||||
for ((i = 0; i < STOP_TIMEOUT; i++)); do
|
||||
remaining=""
|
||||
for pid in $SERVER_PIDS; do
|
||||
kill -0 "$pid" 2>/dev/null && remaining="$remaining $pid"
|
||||
done
|
||||
if [[ -z "$remaining" ]]; then
|
||||
echo "Minecraft server stopped."
|
||||
exit 0
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Server did not stop within ${STOP_TIMEOUT}s; forcing:$remaining"
|
||||
kill -9 $remaining
|
||||
Reference in New Issue
Block a user