Programa un reinicio de servidor ARK: Survival Ascended

Survival Ascended hereda el apetito por la memoria de Survival Evolved y añade el costo básico más alto del motor más nuevo. Un reinicio programado no es opcional en un servidor ocupado; es parte de ejecutarlo.

¿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 comienzaAdvertirServerChat El servidor se reiniciará en 15 minutos
  2. 10 minutos antesAdvertirServerChat El servidor se reiniciará en 10 minutos
  3. 5 minutos antesAdvertirServerChat El servidor se reiniciará en 5 minutos
  4. 1 minutos antesAdvertirServerChat El servidor se reiniciará en 1 minutos
  5. Hora de reinicioGuardarSaveWorld
  6. Hora de reinicioDetenerDoExit

Same as Survival Evolved: SaveWorld first, wait, then DoExit. Ascended writes a larger world and takes correspondingly longer.

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

El script que ejecuta

Guárdalo como /opt/restart-ark_sa.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 ARK: Survival Ascended.
# 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:-27020}"
: "${RCON_PASSWORD:?set RCON_PASSWORD before running}"

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

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

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

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

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

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

sleep 10
# Shut down cleanly
send 'DoExit'

# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start ark_sa 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 ARK: Survival Ascended

SaveWorld primero, espera, luego DoExit — la misma regla que Survival Evolved, y importa más aquí porque Ascended's world files son más grandes y tardan más en escribirse. Da al guardado un margen generoso antes del comando de parada y da al proceso un margen generoso antes de que algo intente volver a ponerlo en marcha.

Soporte & Ayuda