Programa un reinicio de servidor Left 4 Dead 2
Left 4 Dead 2 sesiones son campañas y un reinicio termina la que esté en curso. Eso hace que el caso para programar uno sea más débil aquí que casi en cualquier otro lugar.
¿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 reinicioDetener
quit
Nothing to save. A restart drops any campaign in progress, so favour a long interval over a short one.
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-l4d2.sh
El script que ejecuta
Guárdalo como /opt/restart-l4d2.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 Left 4 Dead 2.
# 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 '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 70
# Shut down cleanly
send 'quit'
# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start l4d2 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 Left 4 Dead 2
Preferir un intervalo largo — semanal en lugar de diario — y elegir una hora en la que nadie esté a mitad de una campaña. No hay nada que guardar, así que el único costo de un reinicio es la sesión que interrumpe y ese costo es enteramente sobre la sincronización.