Planifiez un redémarrage de serveur ARK: Survival Evolved
ARK est le jeu où les redémarrages planifiés comptent le plus, et où les faire de manière négligente coûte le plus. L'utilisation de la mémoire augmente régulièrement avec le nombre de dinosaures et de structures, et un serveur laissé pendant une semaine est visiblement plus mauvais qu'un serveur redémarré quotidiennement.
À quel moment doit-il redémarrer ?
Utilisez {{minutes}} là où le nombre de compte à rebours doit être placé.
Ce qui se passe, dans l'ordre
- Le travail commenceAvertir
ServerChat Redémarrage du serveur dans 15 minutes - 10 minutes avantAvertir
ServerChat Redémarrage du serveur dans 10 minutes - 5 minutes avantAvertir
ServerChat Redémarrage du serveur dans 5 minutes - 1 minutes avantAvertir
ServerChat Redémarrage du serveur dans 1 minutes - Heure de redémarrageEnregistrer
SaveWorld - Heure de redémarrageArrêter
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.
La ligne cron
Décalé de 15 minutes plus tôt que l'heure choisie, afin que le redémarrage lui-même tombe à cette heure plutôt qu'à 15 minutes après.
45 3 * * * /opt/restart-ark_se.sh
Le script qu'il exécute
Enregistrer en tant que /opt/restart-ark_se.sh et le rendre exécutable. Il suppose que rcon-cli est sur le chemin et lit le mot de passe à partir de l'environnement plutôt que de l'intégrer.
#!/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 Redémarrage du serveur dans 15 minutes'
sleep 300
# 10 minute warning
send 'ServerChat Redémarrage du serveur dans 10 minutes'
sleep 300
# 5 minute warning
send 'ServerChat Redémarrage du serveur dans 5 minutes'
sleep 240
# 1 minute warning
send 'ServerChat Redémarrage du serveur dans 1 minutes'
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 || trueLe cron utilise le fuseau horaire du serveur, pas le vôtre. Vérifiez-le avec timedatectl avant de supposer que 04:00 signifie 04:00 chez vous — un conteneur en UTC et un administrateur en Europe sont deux heures éloignés en été et une en hiver.
La partie spécifique à ARK: Survival Evolved
Envoyer toujours SaveWorld et attendre qu'il revienne avant DoExit. ARK n'enregistre pas de manière fiable à l'arrêt — c'est la cause la plus courante pour qu'une tribu se connecte et trouve une journée de progression disparue, et c'est entièrement évitable. Si vous exécutez un cluster, chaque carte est un serveur séparé avec son propre enregistrement, et chacun d'entre eux a besoin de la séquence complète.