Planifiez un redémarrage de serveur Terraria
Un serveur Terraria est léger, et un redémarrage planifié est surtout une question de rotation d'enregistrement et de purification de tout ce qu'un processus de longue durée a accumulé. C'est une habitude peu coûteuse plutôt qu'une nécessité.
À 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
/broadcast Redémarrage du serveur dans 15 minutes - 10 minutes avantAvertir
/broadcast Redémarrage du serveur dans 10 minutes - 5 minutes avantAvertir
/broadcast Redémarrage du serveur dans 5 minutes - 1 minutes avantAvertir
/broadcast Redémarrage du serveur dans 1 minutes - Heure de redémarrageEnregistrer
/save - Heure de redémarrageArrêter
/off
These are TShock commands — a vanilla Terraria server has only its local console and no remote access at all. /off saves on the way out; /off-nosave is the one to avoid.
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-terraria.sh
Le script qu'il exécute
Enregistrer en tant que /opt/restart-terraria.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 Terraria.
# 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:-7777}"
: "${RCON_PASSWORD:?set RCON_PASSWORD before running}"
send() {
rcon-cli --host "$RCON_HOST" --port "$RCON_PORT" --password "$RCON_PASSWORD" "$1"
}
# 15 minute warning
send '/broadcast Redémarrage du serveur dans 15 minutes'
sleep 300
# 10 minute warning
send '/broadcast Redémarrage du serveur dans 10 minutes'
sleep 300
# 5 minute warning
send '/broadcast Redémarrage du serveur dans 5 minutes'
sleep 240
# 1 minute warning
send '/broadcast Redémarrage du serveur dans 1 minutes'
sleep 60
# Flush the world to disk
send '/save'
sleep 10
# Shut down cleanly
send '/off'
# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start terraria 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 à Terraria
Ces commandes sont TShock's — un serveur Terraria vanilla n'a que sa console locale et aucun accès à distance, donc si vous exécutez vanilla, rien de tout cela n'est applicable et vos options sont une session d'écran ou tmux et un clavier. Au sein de TShock, soyez prudent pour utiliser /off plutôt que /off-nosave ; les deux sont séparés d'une seule touche de clavier et l'un d'eux abandonne tout depuis le dernier enregistrement.