Programa un reinicio de servidor 7 Days to Die

El uso de memoria de un servidor de 7 Days to Die sigue cuánto de la carta ha sido explorado y cuánto ha sido construido, y ninguno de los dos disminuye. Reiniciar diariamente mantiene el servidor respondiendo a lo largo de una larga sesión de juego, lo que importa más en las noches de la horda a las que todos realmente asisten.

¿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 comienzaAdvertirsay "El servidor se reiniciará en 15 minutos"
  2. 10 minutos antesAdvertirsay "El servidor se reiniciará en 10 minutos"
  3. 5 minutos antesAdvertirsay "El servidor se reiniciará en 5 minutos"
  4. 1 minutos antesAdvertirsay "El servidor se reiniciará en 1 minutos"
  5. Hora de reinicioGuardarsaveworld
  6. Hora de reinicioDetenershutdown

The console here is telnet rather than RCON. Reach it over an SSH tunnel or from the machine itself — the telnet port must not be forwarded, because it authenticates with a password in clear text.

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

El script que ejecuta

Guárdalo como /opt/restart-seven_days_to_die.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 7 Days to Die.
# 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:-8081}"
: "${RCON_PASSWORD:?set RCON_PASSWORD before running}"

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

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

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

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

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

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

sleep 10
# Shut down cleanly
send 'shutdown'

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

La consola aquí es telnet, no RCON, y telnet envía su contraseña en texto claro. Ejecuta el script en el servidor mismo o alcanza el puerto a través de un túnel SSH — nunca por reenvío. cronometra el reinicio lejos del día siete y sus múltiplos: un reinicio que cae en medio de una luna de sangre es el peor momento posible, y el horario no sabrá eso a menos que lo planes.

Soporte & Ayuda