Agenda um reinício do servidor 7 Days to Die
O uso de memória de um servidor 7 Days to Die acompanha quanto da carta já foi explorada e quanto já foi construído, e nenhuma delas diminui. Reiniciar diariamente mantém o servidor responsivo através de uma longa jogatina, o que importa mais nas noites de horda em que todos realmente aparecem.
Quando deve reiniciar?
Use {{minutes}} onde o número da contagem regressiva deve ir.
O que acontece, na ordem
- A tarefa começaAvisar
say "O servidor vai reiniciar em 15 min" - 10 min antesAvisar
say "O servidor vai reiniciar em 10 min" - 5 min antesAvisar
say "O servidor vai reiniciar em 5 min" - 1 min antesAvisar
say "O servidor vai reiniciar em 1 min" - Hora do reinícioGuardar
saveworld - Hora do reinícioParar
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.
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-seven_days_to_die.sh
O script que executa
Guardar como /opt/restart-seven_days_to_die.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 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 "O servidor vai reiniciar em 15 min"'
sleep 300
# 10 minute warning
send 'say "O servidor vai reiniciar em 10 min"'
sleep 300
# 5 minute warning
send 'say "O servidor vai reiniciar em 5 min"'
sleep 240
# 1 minute warning
send 'say "O servidor vai reiniciar em 1 min"'
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 || 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 7 Days to Die
A consola aqui é telnet, não RCON, e telnet envia a sua palavra-passe em texto claro. Execute o script no servidor em si ou alcance o porto através de um túnel SSH — nunca por forward. Tempo o reinício longe do dia sete e dos seus múltiplos: um reinício que cai no meio de uma lua de sangue é o pior momento possível, e o agendamento não saberá disso a não ser que você o planeie.