Planifiez un redémarrage de serveur ARK: Survival Ascended

Survival Ascended hérite de l'appétit de Survival Evolved pour la mémoire et ajoute le coût de base plus élevé du moteur plus récent. Un redémarrage planifié n'est pas optionnel sur un serveur occupé ; c'est une partie de l'exécution d'un.

À 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

  1. Le travail commenceAvertirServerChat Redémarrage du serveur dans 15 minutes
  2. 10 minutes avantAvertirServerChat Redémarrage du serveur dans 10 minutes
  3. 5 minutes avantAvertirServerChat Redémarrage du serveur dans 5 minutes
  4. 1 minutes avantAvertirServerChat Redémarrage du serveur dans 1 minutes
  5. Heure de redémarrageEnregistrerSaveWorld
  6. Heure de redémarrageArrêterDoExit

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

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

Le script qu'il exécute

Enregistrer en tant que /opt/restart-ark_sa.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 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 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_sa 2>/dev/null || true

Le 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 Ascended

SaveWorld d'abord, attendre, puis DoExit — la même règle que Survival Evolved, et cela compte plus ici parce que les fichiers du monde d'Ascended sont plus grands et prennent plus de temps à écrire. Donnez à l'enregistrement une marge généreuse avant la commande d'arrêt, et donnez au processus une marge généreuse avant que quoi que ce soit ne tente de le faire redémarrer.

Assistance & Aide