Programa un reinicio de servidor Palworld

Palworld su uso de memoria aumenta con el número de bases y amigos en el mundo y no lo libera, lo que hace que un servidor dedicado sea un candidato fuerte para un reinicio diario. Es uno de los casos más claros donde el tiempo de actividad y el rendimiento están directamente opuestos.

¿Cuándo debería reiniciarse?

Usa {{minutes}} donde debería ir el número de la cuenta atrás.

Lo que ocurre, en orden

  1. El trabajo comienzaAdvertirBroadcast El servidor se reiniciará en 15 minutos
  2. 10 minutos antesAdvertirBroadcast El servidor se reiniciará en 10 minutos
  3. 5 minutos antesAdvertirBroadcast El servidor se reiniciará en 5 minutos
  4. 1 minutos antesAdvertirBroadcast El servidor se reiniciará en 1 minutos
  5. Hora de reinicioGuardarSave
  6. Hora de reinicioDetenerShutdown 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.

La línea crontab

Desplazado 15 minutos antes de la hora elegida, para que el reinicio caiga en ella en lugar de 15 minutos después.

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

El script que ejecuta

Guárdalo como /opt/restart-palworld.sh y hazlo ejecutable. Supone que rcon-cli está en la ruta y lee la contraseña del entorno en lugar de incrustarla.

#!/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 El servidor se reiniciará en 15 minutos'

sleep 300
# 10 minute warning
send 'Broadcast El servidor se reiniciará en 10 minutos'

sleep 300
# 5 minute warning
send 'Broadcast El servidor se reiniciará en 5 minutos'

sleep 240
# 1 minute warning
send 'Broadcast El servidor se reiniciará en 1 minutos'

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

El cron utiliza la zona horaria del servidor, no la tuya. Compruébala con timedatectl antes de asumir que las 04:00 son las 04:00 donde estás —un contenedor en UTC y un administrador en Europa tienen dos horas de diferencia en verano y una en invierno.

La parte específica de Palworld

Dos particularidades. La emisión de broadcast se recorta en la primera espacio en muchos casos, por lo que un aviso de varias palabras llega como una sola palabra — prueba la tuya antes de confiar en ella. Y el comando de cierre requiere un retraso en segundos más su propio mensaje, por lo que puede ejecutar el recuento final; si la emisión de broadcast es poco fiable en tu caso, utiliza en cambio un retraso de cierre prolongado en lugar de una escalera de advertencia.

Soporte & Ayuda