Plane den Restart deines Palworld Servers

Palworld's Speicherverbrauch wächst mit der Anzahl der Basen und Pal-Freunde in der Welt und gibt ihn nicht frei, was einen dedizierten Server zu einem starken Kandidaten für einen täglichen Neustart macht. Dies ist einer der klareren Fälle, in denen die Laufzeit und die Leistung direkt entgegengesetzt sind.

Wann sollte es neu starten?

Verwende {{minutes}}, wo die Countdown-Nummer hingehen sollte.

Was passiert, der Reihe nach

  1. Job startetWarnenBroadcast Server restartet in 15 Minuten
  2. 10 Minuten vorherWarnenBroadcast Server restartet in 10 Minuten
  3. 5 Minuten vorherWarnenBroadcast Server restartet in 5 Minuten
  4. 1 Minuten vorherWarnenBroadcast Server restartet in 1 Minuten
  5. NeustartzeitSpeichernSave
  6. NeustartzeitStoppShutdown 60 Scheduled restart

Shutdown takes a delay in seconds and its own message, so it can do the final countdown for you. Note the quirk in Broadcast: on many builds it truncates at the first space, so a multi-word warning arrives as one word. Test yours before trusting it, and fall back to the Shutdown message if it does.

Die crontab-Zeile

Verschoben um 15 Minuten früher als deine gewählte Zeit, damit der Neustart selbst auf ihr landet, anstatt 15 Minuten danach.

45 3 * * *  /opt/restart-palworld.sh

Das Skript, das es ausführt

Speichere als /opt/restart-palworld.sh und mache es ausführbar. Es geht davon aus, dass rcon-cli auf dem Pfad ist und liest das Passwort aus der Umgebung anstatt es einzubetten.

#!/usr/bin/env bash
set -euo pipefail

# Scheduled restart for Palworld.
# Generated by spawnly.net/tools/restart-scheduler

# The password stays out of this file. Put it in the environment, or in a
# file only root can read, and export it before this script runs.
RCON_HOST="${RCON_HOST:-127.0.0.1}"
RCON_PORT="${RCON_PORT:-25575}"
: "${RCON_PASSWORD:?set RCON_PASSWORD before running}"

send() {
  rcon-cli --host "$RCON_HOST" --port "$RCON_PORT" --password "$RCON_PASSWORD" "$1"
}

# 15 minute warning
send 'Broadcast Server restartet in 15 Minuten'

sleep 300
# 10 minute warning
send 'Broadcast Server restartet in 10 Minuten'

sleep 300
# 5 minute warning
send 'Broadcast Server restartet in 5 Minuten'

sleep 240
# 1 minute warning
send 'Broadcast Server restartet in 1 Minuten'

sleep 60
# Flush the world to disk
send 'Save'

sleep 10
# Shut down cleanly
send 'Shutdown 60 Scheduled restart'

# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start palworld 2>/dev/null || true

Der Cron verwendet die Zeitzone des Servers, nicht deine. Überprüfe sie mit timedatectl, bevor du davon ausgehst, dass 04:00 Uhr 04:00 Uhr bedeutet – ein Container in UTC und ein Admin in Europa sind im Sommer zwei Stunden und im Winter eine Stunde auseinander.

Der Teil, der spezifisch für Palworld ist

Zwei Eigenheiten. Broadcast kürzt bei vielen Versionen nach dem ersten Leerzeichen ab, sodass eine mehrwortige Warnung als ein einziges Wort ankommt – teste deinen eigenen, bevor du dich darauf verlässt. Und der Shutdown-Befehl braucht eine Verzögerung in Sekunden plus seine eigene Nachricht, sodass er den Endzähler selbst ausführen kann; wenn Broadcast auf deiner Version unzuverlässig ist, verwende stattdessen eine lange Shutdown-Verzögerung anstelle einer Warnungsleiter.

Support & Hilfe