[SERVEUR]Ecrire dans le screen de minecraft pour le sauvegarder

0.00 avg. rating (0% score) - 0 votes
Partager:

Quand on démarre un serveur Minecraft sur linux, on à juste à taper une commande pour lancer le serveur. Il y a rien de plus simple, mais quand on ferme le terminal, qu’est ce qu’il se passe ? Le serveur Minecraft s’arrête, c’est assez embêtant.

Pour régler ce léger problème, on utilise screen qui va laisser tourner le serveur même le terminal fermé:


apt-get install screen

Quelques bases de screen:

Pour lister les screen déjà ouvert, on tape:


screen -ls

Pour en rejoindre un:


screen -r Le_nom_du_screen

Ou le petit nombre avant le nom du screen.

Et pour en créer un:


screen -S Le_nom_du_screen_à_créer

Pour un script de sauvegarde je voulais donc écrire dans le screen ou tourne minecraft sans y rentrer pour écrire dans le chat que le serveur allait s’arrêter pour la sauvegarde… et taper des commandes comme le save-all… et ensuite le redémarrer.
Mais comment faire ? Car dans toutes mes recherches, je n’ai pratiquement jamais trouvé comment le faire en ligne de commande sans rentrer dans le screen(ou alors j’ai mal chercher)

Voici des exemples:


screen -rd minecraft -X -p0 eval "stuff 'say Attention, un message important va suivre.'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  Il est lheure de la sauvegarde du serveur.'^m"
screen -rd minecraft -X -p0 eval "stuff 'say Le serveur reboot dans quelques secondes, cela va prendre plusieurs minutes(max 5) avant de le redémarrer.'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  Merci de votre compréhension.'^m"
screen -rd minecraft -X -p0 eval "stuff 'save-all'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  Début du compte à rebours...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  5...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  4...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  3...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  2...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  1...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'say  0...'^m"
screen -rd minecraft -X -p0 eval "stuff 'say  Arrêt...'^m"
sleep 1
screen -rd minecraft -X -p0 eval "stuff 'stop'^m"

Dans ces exemples, j’écris plusieurs messages dans le chat espacé d’une seconde grace à sleep et à la fin un petit compte à rebours et j’arrête le serveur. Ensuite il reste plus qu’à sauvegarder les fichiers et le redémarrer chez moi c’est:


screen -rd minecraft -X -p0 eval "stuff 'java  -Xms512M -Xmx512M -jar spigot-1.7.10-R0.1-SNAPSHOT.jar nogui'^m"

Il y a que deux choses à modifier:
le nom du screen: ici minecraft
la commande à exécuter: message dans le chat, save-all, stop ou la commande pour le démarrer…

Attention
Il arrive que suivant le serveur utilisé et peut être suivant ce qui est installé sur votre serveur que l’arrêt soit plus long par conséquent la commande de redémarrage du serveur sera envoyé au mauvais moment et le serveur ne sera jamais redémarré.
Il vaut donc mieux attendre quelques secondes de plus par sécurité pour envoyer la commande.

A titre informatif, je le fais avec minecraft, mais ça fonctionne peut être de la même manière pour d’autres programmes qui tourneraient dans un screen. Je n’ai pas testé.


Tous les codes sont testés et sont fonctionnels, si un de ces codes ne marche pas chez vous, merci de me le signaler.
Partager:
0.00 avg. rating (0% score) - 0 votes

Vous aimerez aussi...

Laisser un commentaire