Programa un reinicio de servidor Garry's Mod
Garry's Mod servidores degradan de una manera que es particularmente visible — los complementos pesados en Lua filtran el estado, los números de entidades suben y un servidor que se sintió bien ayer es visiblemente peor hoy. Un reinicio diario es una práctica común por una razón.
¿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
There is no world to save — Garry’s Mod builds nothing persistent by default, so the restart is just a clean process exit. Gamemodes that do persist data usually save continuously.
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-gmod.sh
El script que ejecuta
Guárdalo como /opt/restart-gmod.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 Garry's Mod.
# 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 gmod 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 Garry's Mod
No hay nada que guardar. Los complementos predeterminados construyen nada persistente y los complementos que sí lo hacen casi siempre lo escriben continuamente en lugar de en el cierre. Eso hace que la secuencia aquí sea más simple que en cualquier otro lugar de esta lista: advierte, luego cierra. Si tu complemento mantiene el estado en memoria, revisa su documentación antes de asumir que una salida limpia es suficiente.