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
- El trabajo comienzaAdvertir
say "El servidor se reiniciará en 15 minutos" - 10 minutos antesAdvertir
say "El servidor se reiniciará en 10 minutos" - 5 minutos antesAdvertir
say "El servidor se reiniciará en 5 minutos" - 1 minutos antesAdvertir
say "El servidor se reiniciará en 1 minutos" - Hora de reinicioGuardar
saveworld - Hora de reinicioDetener
shutdown
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 || trueEl 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.