Planifiez un redémarrage de serveur Left 4 Dead 2
Left 4 Dead 2 les sessions sont des campagnes, et un redémarrage termine celle qui est en cours. Cela rend le cas pour planifier un plus faible ici que presque partout ailleurs.
À 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
say Redémarrage du serveur dans 15 minutes - 10 minutes avantAvertir
say Redémarrage du serveur dans 10 minutes - 5 minutes avantAvertir
say Redémarrage du serveur dans 5 minutes - 1 minutes avantAvertir
say Redémarrage du serveur dans 1 minutes - Heure de redémarrageArrêter
quit
Nothing to save. A restart drops any campaign in progress, so favour a long interval over a short one.
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-l4d2.sh
Le script qu'il exécute
Enregistrer en tant que /opt/restart-l4d2.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 Left 4 Dead 2.
# 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:-27015}"
: "${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 Redémarrage du serveur dans 15 minutes'
sleep 300
# 10 minute warning
send 'say Redémarrage du serveur dans 10 minutes'
sleep 300
# 5 minute warning
send 'say Redémarrage du serveur dans 5 minutes'
sleep 240
# 1 minute warning
send 'say Redémarrage du serveur dans 1 minutes'
sleep 70
# Shut down cleanly
send 'quit'
# Give the process time to finish writing before anything restarts it.
sleep 30
systemctl start l4d2 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 à Left 4 Dead 2
Préférez un intervalle long — hebdomadaire plutôt que quotidien — et choisissez une heure où personne n'est à mi-chemin d'une campagne. Il n'y a rien à enregistrer, donc le seul coût d'un redémarrage est la session qu'il interrompt, et ce coût est entièrement une question de timing.