Programa un reinicio de servidor Project Zomboid

Zomboid mantiene los bloques explorados residentes y el tamaño de la memoria de un servidor en ejecución aumenta gradualmente con la distancia que han viajado tus jugadores. Un reinicio es lo único que lo devuelve a cero.

¿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 comienzaAdvertirservermsg "El servidor se reiniciará en 15 minutos"
  2. 10 minutos antesAdvertirservermsg "El servidor se reiniciará en 10 minutos"
  3. 5 minutos antesAdvertirservermsg "El servidor se reiniciará en 5 minutos"
  4. 1 minutos antesAdvertirservermsg "El servidor se reiniciará en 1 minutos"
  5. Hora de reinicioGuardarsave
  6. Hora de reinicioDetenerquit

quit saves and exits cleanly. Zomboid keeps a lot of loaded chunks in memory on a well-explored map, so the save can take noticeably longer than you expect.

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-project_zomboid.sh

El script que ejecuta

Guárdalo como /opt/restart-project_zomboid.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 Project Zomboid.
# 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:-27015}"
: "${RCON_PASSWORD:?set RCON_PASSWORD before running}"

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

# 15 minute warning
send 'servermsg "El servidor se reiniciará en 15 minutos"'

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

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

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

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

sleep 10
# Shut down cleanly
send 'quit'

# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start project_zomboid 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 Project Zomboid

El guardado puede tardar considerablemente más de lo que esperas en un mapa bien explorado, así que deja un tiempo real entre el guardado y el parada. Zomboid también es especialmente castigador con las desconexiones — un jugador muerto por una desconexión stays dead — lo que hace que la elección de la hora de reinicio sea más importante aquí que en la mayoría de los juegos. Elige horas reales de inactividad.

Soporte & Ayuda