Script shell du serveur Minecraft · GitHub – Resoudre les problemes d’un serveur MineCraft
Author: Titanfall —
Short summary: #!/ bin / bash # auteur original: Relliktsohg # Un grand merci à Maine pour sa sauvegarde incrémentale # Merci à endofzero pour sa routine de mise à jour améliorée # # Installation: # – Copiez le script dans votre dossier de serveur Minecraft. # – Autoriser l'exécution du script (chmod + x minecraft.sh) # […]
Quick overview
- Site
- Tutos GameServer
- Canonical URL
- https://tutos-gameserver.fr/2019/05/03/script-shell-du-serveur-minecraft-%c2%b7-github-resoudre-les-problemes-dun-serveur-minecraft/
- LLM HTML version
- https://tutos-gameserver.fr/2019/05/03/script-shell-du-serveur-minecraft-%c2%b7-github-resoudre-les-problemes-dun-serveur-minecraft/llm
- LLM JSON version
- https://tutos-gameserver.fr/2019/05/03/script-shell-du-serveur-minecraft-%c2%b7-github-resoudre-les-problemes-dun-serveur-minecraft/llm.json
- Manifest
- https://tutos-gameserver.fr/llm-endpoints-manifest.json
- Estimated reading time
- 10 minutes (599 seconds)
- Word count
- 1994
Key points
- #!/ bin / bash # auteur original: Relliktsohg # Un grand merci à Maine pour sa sauvegarde incrémentale # Merci à endofzero pour sa routine de mise à jour améliorée # # Installation: # – Copiez le script dans votre dossier de serveur Minecraft.
- # – Autoriser l'exécution du script (chmod + x minecraft.sh) # – Vérifiez les droits de l'utilisateur du script.
- Chaque dossier spécifié dans la configuration doit être disponible.
- # – Editez le script pour le configurer (voir la section configurer) # – Plus de détails: http://www.minecraftforum.net/topic/37290-another-shell-script/ # # Usage: # ./minecraft.sh # – Sans argument, le script reprendra l'écran du serveur.
Primary visual
Structured content
#!/ bin / bash
# auteur original: Relliktsohg
# Un grand merci à Maine pour sa sauvegarde incrémentale
# Merci à endofzero pour sa routine de mise à jour améliorée
#
# Installation:
# – Copiez le script dans votre dossier de serveur Minecraft.
# – Autoriser l'exécution du script (chmod + x minecraft.sh)
# – Vérifiez les droits de l'utilisateur du script. Chaque dossier spécifié dans la configuration doit être disponible.
# – Editez le script pour le configurer (voir la section configurer)
# – Plus de détails: http://www.minecraftforum.net/topic/37290-another-shell-script/
#
# Usage:
# ./minecraft.sh
# – Sans argument, le script reprendra l'écran du serveur. (Si vous voulez fermer
# l'écran sans arrêter le serveur, utilisez CTRL + A puis appuyez sur D pour détacher l'écran)
#
# statut ./minecraft.sh
# – Vous indique si le serveur est en cours d'exécution ou non.
#
# ./minecraft.sh start [force]
# – Démarre le serveur. Si vous savez que votre serveur ne fonctionne pas, mais que le script le croit, utilisez la commande
# options de force.
#
# ./minecraft.sh stop [force]
# – S'explique
#
# ./minecraft.sh redémarrer [warn]
# – Si l'option warn est spécifiée, un avertissement 30s & 10s s'affichera avant le redémarrage.
#
# Journaux ./minecraft.sh [clean]
# – Analyse les journaux dans plusieurs fichiers, regroupés dans un dossier nommé avec la date de la journalisation.
# Si l'option de nettoyage est spécifiée, les dossiers les plus anciens seront déplacés dans le dossier de sauvegarde.
# Encore une fois, cette commande devrait poser problème avant le redémarrage du serveur.
#
# ./minecraft.sh sauvegarde [clean]
# – Affiche un message aux joueurs si le serveur est en ligne, arrête l'écriture de morceaux, crée un
# archives datées et sauvegarde le dossier du monde. Si l'option de nettoyage est spécifiée, le programme sera supprimé.
# archives plus anciennes.
#
# ./minecraft.sh cartographie
# – Affiche un message aux joueurs si le serveur est en ligne, arrête l'écriture de morceaux, initie
# Le script de cartographie de c10t. Je recommande fortement que MAPS_PATH soit un dossier public Internet.
#
# ./minecraft.sh mise à jour
# – Arrête le serveur s'il est en ligne, sauvegarde les anciens binairies, télécharge les derniers binaires de
# mincraft.net et redémarre le serveur.
# Configuration
MC_PATH = / home / minecraft
SERVERMOD = 0
RUNECRAFT = 0
SCREEN_NAME ="Minecraft"
MEMALOC = 512
DISPLAY_ON_LAUNCH = 1
WORLD_NAME ="monde"
BKUP_PATH =$ MC_PATH/ sauvegarde
BKUP_DAYS_INCR = 2
BKUP_DAYS_FULL = 5
BACKUP_FULL_LINK =$ BKUP_PATH/$ WORLD_NAME_full.tgz
BACKUP_INCR_LINK =$ BKUP_PATH/$ WORLD_NAME_incr.tgz
CARTO_PATH =$ MC_PATH/ carto
MAPS_PATH = / var / www / minecraftMaps
LOG_TDIR = / var / www / minecraftLogs
LOGS_DAYS = 7
# Fin de configuration
si [[[[$ SERVERMOD -eq 1 ]
puis
si [[[[-e $ MC_PATH/ journaux /*.log.lck]
puis
ONLINE = 1
autre
ONLINE = 0
Fi
autre
si [[[[-e $ MC_PATH/server.log.lck]
puis
# ps -e | grep java | wc -l
ONLINE = 1
autre
ONLINE = 0
Fi
Fi
afficher()
écran -R $ SCREEN_NAME
serveur_launch()
écho "Lancer le serveur minecraft …"
si [[[[$ SERVERMOD -eq 1 ]
puis
CD $ MC_PATH; écran -m -d -S $ SCREEN_NAME java -Xmx$ MEMALOCM -Xms$ MEMALOCM -Djava.net.preferIPv4Stack = true -jar Minecraft_Mod.jar nogui; dormir 1
autre
CD $ MC_PATH; écran -m -d -S $ SCREEN_NAME java -Xmx$ MEMALOCM -Xms$ MEMALOCM -Djava.net.preferIPv4Stack = true -jar minecraft_server.jar nogui; dormir 1
Fi
arrêt_serveur()
écho "Arrêt du serveur minecraft …"
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "arrêter. r"`"; dormir 5
si [[[[$ # -gt 0]
puis
Cas 1 $ dans
################################################## ###############
"statut")
si [[[[$ ONLINE -eq 1 ]
puis
écho "Le serveur Minecraft semble en ligne."
autre
écho "Le serveur Minecraft semble hors ligne."
Fi;;
################################################## ###############
"début")
si [[[[$ ONLINE -eq 1 ]
puis
écho "Le serveur semble déjà fonctionner!"
Cas 2 $ dans
"Obliger")
tuer `ps -e | grep java | cut -d " " -f 1`
rm -fr $ MC_PATH/*.log.lck 2> / dev / null / ;;
esac
autre
serveur_launch
si [[[[$ DISPLAY_ON_LAUNCH -eq 1 ]
puis
afficher
Fi
Fi;;
################################################## ###############
"Arrêtez")
si [[[[$ ONLINE -eq 1 ]
puis
arrêt_serveur
autre
Cas 2 $ dans
"Obliger")
tuer `ps -e | grep java | cut -d " " -f 1`
rm -fr $ MC_PATH/*.log.lck 2> / dev / null / ;;
*)
écho "Le serveur semble être hors ligne …";;
esac
Fi;;
################################################## ###############
"redémarrer")
si [[[[$ ONLINE -eq 1 ]
puis
Cas 2 $ dans
"prévenir")
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "dit le serveur va redémarrer dans 30s! r"`"; dormir 20
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "Dites que le serveur va redémarrer dans 10s! r"`"; dormir 10 ;;
esac
arrêt_serveur
Fi
serveur_launch
si [[[[$ DISPLAY_ON_LAUNCH -eq 1 ]
puis
afficher
Fi;;
################################################## ###############
"les journaux")
mkdir -p $ LOG_TDIR
CD $ LOG_TDIR
Cas 2 $ dans
"nettoyer")
DATE =$ (date +% d-% m –date "$ LOGS_DAYS il y a jour")
si [[[[-e journaux$ DATE ]
puis
mkdir -p $ BKUP_PATH/ journaux
mv logs-$ DATE $ BKUP_PATH/ journaux /
Fi
;;
esac
DATE =$ (date +% d-% m)
LOG_NEWDIR = logs-$ DATE
si [[[[-e $ LOG_TDIR/$ LOG_NEWDIR ]
puis
rm $ LOG_TDIR/$ LOG_NEWDIR/*
autre
mkdir $ LOG_TDIR/$ LOG_NEWDIR
Fi
DATE =$ (date +% d-% m-% Hh% M)
LOG_TFILE = logs-$ DATE.bûche
si [[[[$ SERVERMOD -eq 1 ]
puis
si [[[[$ ONLINE -eq 1 ]
puis
LOG_LCK =$ (nom de base $ MC_PATH/ journaux /*.log.lck .log.lck)
écho "Trouvé un journal verrouillé: $ LOG_LCK"
autre
LOG_LCK =""
Fi
CD $ MC_PATH/ journaux /
pour je dans *
faire
si [[[[$ i ! = $ LOG_LCK.log.lck] # skip du fichier lck
puis
chat $ i >> $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE
si [[[[$ i ! = $ LOG_LCK.log] # Si vous ne supprimez pas le fichier journal, si le service est en route
puis
rm $ i
Fi
Fi
terminé
autre
CD $ MC_PATH
chat serveur.log >> $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE
Fi
si [[[[-e $ LOG_TDIR/ip-list.log]
puis
chat $ LOG_TDIR/ip-list.log | Trier | uniq > $ LOG_TDIR/templist.log
Fi
chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep '[0-9]+ .[0-9]+ .[0-9]+ .[0-9]+. + connecté' | sed -e 's /.* [INFO] s // g' -e 's / [//t/g[//t/g[//t/g[//t/g' -e 's /:.*// g' >> $ LOG_TDIR/templist.log
chat $ LOG_TDIR/templist.log | Trier | uniq -w 4 > $ LOG_TDIR/ip-list.log
rm $ LOG_TDIR/templist.log
chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep 'connecté | connexion perdue' | sed -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]. ([a-zA-Z0-9_] 1, ). 1, connecté / 1 t 2: connecté / g' -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]. ([a-zA-Z0-9_] 1, ). Connexion perdue. * / 1 t 2: déconnecté / g' >> $ LOG_TDIR/$ LOG_NEWDIR/ connexions-$ DATE.bûche
chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep '| [CONSOLE]' | sed -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]./1 / g' >> $ LOG_TDIR/$ LOG_NEWDIR/bavarder-$ DATE.bûche
chat $ LOG_TDIR/$ LOG_NEWDIR/$ LOG_TFILE | egrep 'Exception interne | erreur' | sed -e 's /.* ([0-9] 2 :[0-9] 2 :[0-9] 2 ). [INFO]./1t/g' >> $ LOG_TDIR/$ LOG_NEWDIR/les erreurs-$ DATE.bûche
;;
################################################## ###############
"sauvegarde")
mkdir -p $ BKUP_PATH
si [[[[-e $ MC_PATH/$ WORLD_NAME ]
puis
si [[[[$ ONLINE -eq 1 ]
puis
écho "Serveur en marche, avertissant les joueurs: sauvegarde par 10."
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "Sauvegarde de la carte en 10 secondes"`"; dormir 10
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "Maintenant, sauvegardez la carte …"`"
écho "Emission de la commande save-all, attendez 5s …"
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "sauver-tout r"`"; dormir 5
écho "Envoi de la commande de sauvegarde …"
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "save-off r"`"; dormir 1
Fi
CD $ BKUP_PATH
DATE =$ (date +% Y-% m-% d-% Hh% M)
FILENAME =$ WORLD_NAME–$ DATE
BACKUP_FILES =$ BKUP_PATH/liste.$ DATE
si tester `date +% H` -qq 0 -o ! -F $ BACKUP_FULL_LINK
puis
# Effectuer une sauvegarde complète et supprimer les anciens fichiers incrémentiels
FILENAME =$ FILENAME-full.tgz
# Supprimer les incrémentales antérieures à $ BKUP_DAYS_INCR
# Supprimer les archives complètes antérieures à $ BKUP_DAYS_FULL
trouver ./$ WORLD_NAME–*-incr.tgz -type f -mtime +$ BKUP_DAYS_INCR -impression > purgeliste
trouver ./$ WORLD_NAME–*-full.tgz -type f -mtime +$ BKUP_DAYS_FULL -impression >> purgeliste
rm -f `purgiste de chat`
rm -f purgelist
# Maintenant, faites notre sauvegarde complète
pushd $ MC_PATH
trouver $ WORLD_NAME -type f -print > $ BACKUP_FILES
tar -zcvf $ BKUP_PATH/$ FILENAME –files-from =$ BACKUP_FILES
popd
rm -f $ BACKUP_FULL_LINK $ BACKUP_INCR_LINK
l-s $ FILENAME $ BACKUP_FULL_LINK
autre
# Faire une sauvegarde incrémentielle
FILENAME =$ FILENAME-incr.tgz
pushd $ MC_PATH
trouver $ WORLD_NAME -la réponse $ BACKUP_FULL_LINK -type f -print > $ BACKUP_FILES
tar -zcvf $ BKUP_PATH/$ FILENAME –files-from =$ BACKUP_FILES
popd
rm -f $ BACKUP_INCR_LINK
l-s $ FILENAME $ BACKUP_INCR_LINK
Fi
rm -f $ BACKUP_FILES
si [[[[$ ONLINE -eq 1 ]
puis
écho "Emission d'une commande de sauvegarde …"
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "enregistrer sur r"`"; dormir 1
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "dire que la sauvegarde est terminée, amusez-vous!"`"
Fi
écho "Le processus de sauvegarde est terminé."
autre
écho "Le monde "$ WORLD_NAME " n'existe pas.";
Fi;;
################################################## ###############
"cartographie")
si [[[[-e $ CARTO_PATH ]
puis
si [[[[-e $ MC_PATH/$ WORLD_NAME ]
puis
si [[[[$ ONLINE -eq 1 ]
puis
écho "Emission de la commande save-all, attendez 5s …";
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "sauver-tout r"`"; dormir 5
écho "Envoi de la commande de sauvegarde …";
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "save-off r"`"; dormir 1
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "La cartographie cartographique a commencé."`"
Fi
mkdir -p $ MAPS_PATH
DATE =$ (date +% d-% m-% A-% Hh% M)
FILENAME =$ WORLD_NAME-carte-$ DATE
CD $ CARTO_PATH
écho "Cartographie en cours …"
./c10t -w $ MC_PATH/$ WORLD_NAME/ -o $ FILENAME.png -q -s
mv *.png $ MAPS_PATH
CD $ MC_PATH
écho "La cartographie est terminée."
si [[[[$ ONLINE -eq 1 ]
puis
écho "Emission d'une commande de sauvegarde …"
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "enregistrer sur r"`"; dormir 1
écran -S $ SCREEN_NAME -p 0 -X choses "`printf "dire la cartographie de la carte est faite. r"`"
Fi
autre
écho "Le monde "$ WORLD_NAME " n'existe pas.";
Fi
autre
écho "Le chemin vers cartographier semble être faux."
Fi;;
################################################## ###############
"mettre à jour")
si [[[[$ ONLINE -eq 1 ]
puis
arrêt_serveur
Fi
mkdir -p $ BKUP_PATH
écho "Sauvegarde des fichiers binaires actuels …"
DATE =$ (date +% d-% m-% Y)
CD $ MC_PATH
si [[[[$ SERVERMOD -eq 1 ]
puis
tar -czf minecraft_server-$ DATE.tar.gz minecraft_server.jar Minecraft_Mod.jar
rm Minecraft_Mod.jar
autre
tar -czf minecraft_server-$ DATE.tar.gz minecraft_server.jar
Fi
mv minecraft_server-$ DATE.tar.gz $ BKUP_PATH
écho "Téléchargement de nouveaux fichiers binaires …"
wget -N http://www.minecraft.net/download/minecraft_server.jar
si [[[[$ SERVERMOD -eq 1 ]
puis
"Téléchargement de serverMod de hey0 …"
mkdir -p ModTmp; CD ModTmp /
wget -O Minecraft_Mod.zip http://hey0.net/get.php?dl = serverbeta
Décompressez Minecraft_Mod.zip
cp bin / Minecraft_Mod.jar $ MC_PATH/Minecraft_Mod.jar
CD $ MC_PATH; rm -rf ModTmp
Fi
si [[[[$ RUNECRAFT -eq 1 ]
puis
écho "Téléchargement de Runecraft …"
mkdir -p ModTmp; CD ModTmp /
wget http://llama.cerberusstudios.net/runecraft_latest.zip
décompresser runecraft_latest.zip
pot uvf $ MC_PATH/minecraft_server.jar in.class o.class mm.class rm.class rn.class rt.class
CD $ MC_PATH; rm -rf ModTmp
Fi
serveur_launch
si [[[[$ DISPLAY_ON_LAUNCH -eq 1 ]
puis
afficher
Fi;;
################################################## ###############
*)
écho "Utilisation: minecraft ";
esac
autre
si [[[[$ ONLINE -eq 1 ]
puis
afficher
autre
écho "Le serveur Minecraft semble être hors ligne …"
Fi
Fi
sortie 0
Click to rate this post! [Total: 0 Average: 0]
Topics and keywords
Themes: Serveur minecraft
License & attribution
License: CC BY-ND 4.0.
Attribution required: yes.
Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json
LLM Endpoints plugin version 1.1.2.