Agenda um reinício do servidor ARK: Survival Evolved
ARK é o jogo onde os reinícios agendados importam mais e onde fazê-los descuidadamente custa mais. O uso de memória sobe gradualmente com a contagem de dinossauros e a contagem de estruturas, e um servidor deixado durante uma semana estará visivelmente pior do que um que é reiniciado diariamente.
Quando deve reiniciar?
Use {{minutes}} onde o número da contagem regressiva deve ir.
O que acontece, na ordem
- A tarefa começaAvisar
ServerChat O servidor vai reiniciar em 15 min - 10 min antesAvisar
ServerChat O servidor vai reiniciar em 10 min - 5 min antesAvisar
ServerChat O servidor vai reiniciar em 5 min - 1 min antesAvisar
ServerChat O servidor vai reiniciar em 1 min - Hora do reinícioGuardar
SaveWorld - Hora do reinícioParar
DoExit
Always send SaveWorld and wait for it to return before DoExit. ARK does not reliably save on shutdown, and this is the single most common cause of a rolled-back tribe base.
A linha do crontab
Deslocado 15 minutos mais cedo do que a hora escolhida, para que o reinício caia nele em vez de 15 minutos depois.
45 3 * * * /opt/restart-ark_se.sh
O script que executa
Guardar como /opt/restart-ark_se.sh e torná-lo executável. Assume que rcon-cli está no caminho e lê a senha do ambiente em vez de a incorporar.
#!/usr/bin/env bash
set -euo pipefail
# Scheduled restart for ARK: Survival Evolved.
# 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 O servidor vai reiniciar em 15 min'
sleep 300
# 10 minute warning
send 'ServerChat O servidor vai reiniciar em 10 min'
sleep 300
# 5 minute warning
send 'ServerChat O servidor vai reiniciar em 5 min'
sleep 240
# 1 minute warning
send 'ServerChat O servidor vai reiniciar em 1 min'
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_se 2>/dev/null || trueO Cron utiliza o fuso horário do servidor, não o teu. Verifica-o com timedatectl antes de presumir que 04:00 é 04:00 onde estás — um container em UTC e um admin na Europa estão duas horas separados no verão e uma no inverno.
A parte específica do ARK: Survival Evolved
Enviar sempre SaveWorld e esperar que ele retorne antes de DoExit. ARK não poupa de forma confiável no encerramento — esta é a causa mais comum de uma tribo fazer o login e encontrar um dia de progresso perdido, e é completamente evitável. Se executar um cluster, cada mapa é um servidor separado com a sua própria poupança, e cada um deles precisa da sequência completa.