Serveur minecraft

# RAM à allouer au serveur export MAX_RAM = "8G" # Nom du fichier pour forge ja – Resoudre les problemes d’un serveur MineCraft

Le 29 octobre 2019 - 10 minutes de lecture

  • # RAM à allouer au serveur

  • export MAX_RAM = "8G"

  • # Nom du fichier pour le fichier forge (requis par certains hôtes)

  • export FORGE_JAR = "forge.jar"

  • Arguments de démarrage de la machine virtuelle Java du serveur

  • export JAVA_ARGS = "- XX: + ExplicitGCInvokesConcurrent -XX: + ExplicitGCInvokesConcurrentAndUnloadsClasses -XX: + UseConcMarkSweepGC -XX: MaxGCPauseMillis = 250 -XX: UseSSE = 3"

  • # Le serveur Max se bloque (à une heure d'intervalle ou moins) pour arrêter le redémarrage automatique (10 par défaut)

  • export CRASH_COUNT = 10

  • # Autoriser le script à s'exécuter dans TMP ou dans des répertoires sans accès en lecture / écriture (0 par défaut)

  • export RUN_FROM_BAD_FOLDER = 0

  • # Ignorer la connectivité Internet [ping] check (0 par défaut)

  • export IGNORE_OFFLINE = 0

  • # Pour les développeurs Modpack

  • # (Ne modifiez pas sauf si vous savez ce que vous faites)

  • export MCVER = "1.10.2"

  • export FORGEVER = "12.18.3.2254"

  • export FORGEURL = "DISABLE"

  • #

  • #

  • #

  • #

  • #

  • #

  • #

  • # Trucs de script internes à partir de maintenant

  • # Aucune ligne destinée à être modifiée après ici

  • #

  • #

  • #

  • #

  • #

  • # Assurez-vous que les utilisateurs n'essaient pas d'exécuter le script via sh directement (cela ne fonctionnera pas)

  • si [ ! « $BASH_VERSION » ] ; ensuite

  • echo "Merci de ne pas utiliser sh pour exécuter ce script ($ 0). Utilisez bash à la place (ou exécutez-le directement)" 1> & 2

  • sortie 1

  • Fi

  • # routine pour gérer l'installation de Forge / serveur

  • install_server () {

  • echo "Démarrage de l'installation des fichiers binaires du serveur Forge / Minecraft"

  • echo "DEBUG: démarrage de l'installation des fichiers binaires du serveur Forge / Minecraft" >> serverstart.log 2> & 1

  • si [ -f installer.jar ]; ensuite

  • echo "DEBUG: installer.jar trouvé dans le répertoire courant" >> serverstart.log 2> & 1

  • exportation réponse = "n"

  • read -t 8 -p "Le programme d'installation a été trouvé. Utilisez-le (y) ou téléchargez-vous à nouveau (n)?"

  • si [[ « $answer » =~ ^([yY][eE][sS]|[yY]) + $]]; ensuite

  • echo "INFO: Téléchargement en cours. Utilisation d'un fichier d'install.jar existant" >> serverstart.log 2> & 1

  • echo "Saut de téléchargement. Utilisation du fichier install.jar existant"

  • Fi

  • autre

  • si [ « $FORGEURL » = « DISABLE » ]; ensuite

  • export URL = "http://files.minecraftforge.net/maven/net/minecraftforge/forge/$VERVER–$FORGEVERBuch/forge-$$CAUVER_forgeVER-".

  • autre

  • export URL = "$ FORGEURL"

  • Fi

  • quel wget >> / dev / null

  • si [ $? -eq 0 ]; ensuite

  • echo "DEBUG: (wget) Téléchargement de $ URL" >> serverstart.log 2> & 1

  • wget -O installer.jar "$ URL" >> serverstart.log 2> & 1

  • autre

  • qui curl >> / dev / null

  • si [ $? -eq 0 ]; ensuite

  • echo "DEBUG: (curl) Téléchargement de $ URL" >> serverstart.log 2> & 1

  • curl -o installer.jar "$ URL" >> serverstart.log 2> & 1

  • autre

  • echo "Ni wget ni curl n'ont été trouvés sur votre système. Veuillez en installer un et réessayer"

  • echo "ERREUR: ni wget ni curl n'ont été trouvés" >> serverstart.log 2> & 1

  • Fi

  • Fi

  • Fi

  • si [ ! -f installer.jar ]; ensuite

  • echo "Le programme d'installation de Forge n'a pas été téléchargé"

  • echo "ERREUR: le programme d'installation de Forge n'a pas téléchargé" >> serverstart.log 2> & 1

  • sortie 0

  • autre

  • echo "Déplacement de fichiers / dossiers inutiles vers ./DELETEME"

  • echo "INFO: Déplacement des fichiers / dossiers inutiles vers ./DELETEME" >> serverstart.log 2> & 1

  • rm -rf ./DELETEME >> serverstart.log 2> & 1

  • mv -f ./asm ./DELETEME >> serverstart.log 2> & 1

  • mv -f ./libraries ./DELETEME >> serverstart.log 2> & 1

  • mv -f ./llibrary ./DELETEME >> serverstart.log 2> & 1

  • mv -f ./minecraft_server*.jar ./DELETEME >> serverstart.log 2> & 1

  • mv -f ./forge*.jar ./DELETEME >> serverstart.log 2> & 1

  • mv -f ./OpenComputersMod*lua* ./DELETEME >> serverstart.log 2> & 1

  • echo "Installation du serveur Forge, veuillez patienter …"

  • echo "INFO: Installation du serveur Forge" >> serverstart.log 2> & 1

  • java -jar installer.jar –installServer >> serverstart.log 2> & 1

  • echo "Suppression du programme d'installation de Forge (n'est plus nécessaire)"

  • echo "INFO: Suppression du fichier installer.jar" >> serverstart.log 2> & 1

  • rm -rf installer.jar >> serverstart.log 2> & 1

  • echo "Renommer le fichier JAR de forge en $ FORGE_JAR"

  • echo "DEBUG: renommer forge – $ MCVER – $ FORGEVER -universal.jar en $ FORGE_JAR" >> serverstart.log 2> & 1

  • mv "forge – $ MCVER – $ FORGEVER -universal.jar" $ FORGE_JAR >> serverstart.log 2> & 1

  • Fi

  • # routine à [re]démarrer le serveur minecraft Forgemodded

  • start_server ()

  • écho ""

  • écho ""

  • echo "Serveur de démarrage"

  • echo "INFO: Serveur de démarrage à" $ (date -u +% Y-% m-% d_% H:% M:% S) >> serverstart.log 2> & 1

  • java -Xmx $ MAX_RAM $ JAVA_ARGS -jar $ FORGE_JAR nogui

  • # routine pour les vérifications de répertoire de base

  • check_dir () [ « $(pwd) » = « /var/tmp » ]; ensuite

  • echo "Le répertoire actuel semble être TMP"

  • echo "WARN: le répertoire DIR actuel est TEMP" >> serverstart.log 2> & 1

  • si [ $RUN_FROM_BAD_FOLDER -eq 0 ]; ensuite

  • echo "ERREUR: arrêt dû à un dossier défectueux (TMP)" >> serverstart.log 2> & 1

  • echo "Le paramètre RUN_FROM_BAD_FOLDER est désactivé, script de sortie"

  • sortie 0

  • autre

  • echo "WARN: Mauvais dossier (TMP) mais continue malgré tout" >> serverstart.log 2> & 1

  • echo "Contournement de cd = arrêt temporaire selon les paramètres du script"

  • Fi

  • Fi

  • si [ ! -r . ]

  • # routine pour la connectivité ping inet

  • check_connection ()

  • si [ $IGNORE_OFFLINE -eq 1 ]; ensuite

  • echo "WARN: la vérification de la connectivité Internet est désactivée" >> serverstart.log 2> & 1

  • echo "Sauter la vérification de la connectivité Internet"

  • autre

  • si ping -c 1 8.8.8.8 >> / dev / null 2> & 1; ensuite

  • echo "INFO: Ping to Google DNS réussi" >> serverstart.log 2> & 1

  • echo "Ping to Google DNS réussie"

  • autre

  • echo "ERREUR: échec de la commande ping vers Google DNS. Pas d'accès à Internet?" >> serverstart.log 2> & 1

  • echo "Echec de la commande ping vers Google DNS. Pas d'accès Internet?"

  • Fi

  • si ping -c 1 4.2.2.1 >> / dev / null 2> & 1; ensuite

  • echo "INFO: Ping to L4 successfull" >> serverstart.log 2> & 1

  • echo "Ping to L4 successfull"

  • autre

  • echo "ERREUR: Echec de la requête Ping to L4. Pas d'accès Internet?" >> serverstart.log 2> & 1

  • echo "Ping to L4 a échoué. Pas d'accès à Internet?"

  • sortie 0

  • Fi

  • Fi

  • # routine pour s'assurer que les fichiers binaires nécessaires sont trouvés

  • check_binaries ()

  • si [ ! -f $FORGE_JAR ] ; ensuite

  • echo "WARN: $ FORGE_JAR introuvable" >> serverstart.log 2> & 1

  • echo "Fichiers requis non trouvés, vous devez installer Forge"

  • install_server

  • Fi

  • si [ ! -f ./minecraft_server.$MCVER.jar ] ; ensuite

  • echo "WARN: minecraft_server. $ MCVER .jar non trouvé" >> serverstart.log 2> & 1

  • echo "Fichiers requis non trouvés, vous devez installer Forge"

  • install_server

  • Fi

  • si [ ! -d ./libraries ] ; ensuite

  • echo "WARN: répertoire de la bibliothèque introuvable" >> serverstart.log 2> & 1

  • echo "Fichiers requis non trouvés, vous devez installer Forge"

  • install_server

  • Fi

  • # Le script / le lot commence ici …

  • # fichier journal init et informations de base de vidage

  • echo "INFO: le script de démarrage à" $ (date -u +% Y-% m-% d_% H:% M:% S)> serverstart.log 2> & 1

  • echo "DEBUG: Dumping des variables de départ:" >> serverstart.log 2> & 1

  • echo "DEBUG: MAX_RAM = $ MAX_RAM" >> serverstart.log 2> & 1

  • echo "DEBUG: FORGE_JAR = $ FORGE_JAR" >> serverstart.log 2> & 1

  • echo "DEBUG: JAVA_ARGS = $ JAVA_ARGS" >> serverstart.log 2> & 1

  • echo "DEBUG: CRASH_COUNT = $ CRASH_COUNT" >> serverstart.log 2> & 1

  • echo "DEBUG: RUN_FROM_BAD_FOLDER = $ RUN_FROM_BAD_FOLDER" >> serverstart.log 2> & 1

  • echo "DEBUG: IGNORE_OFFLINE = $ IGNORE_OFFLINE" >> serverstart.log 2> & 1

  • echo "DEBUG: MCVER = $ MCVER" >> serverstart.log 2> & 1

  • echo "DEBUG: FORGEVER = $ FORGEVER" >> serverstart.log 2> & 1

  • echo "DEBUG: FORGEURL = $ FORGEURL" >> serverstart.log 2> & 1

  • echo "DEBUG: Informations système de base:" $ (uname -a) >> serverstart.log 2> & 1

  • echo "DEBUG: Estimation de la RAM totale:" $ (getconf -a | grep PAGES | awk 'BEGIN total = 1 if (NR == 1 FIN print total / 1024/1024 "MB" ') >> serverstart.log 2> & 1

  • echo "DEBUG: Informations sur la version de Java:" $ (version java) >> serverstart.log 2> & 1

  • echo "DEBUG: Vider la liste du répertoire courant" >> serverstart.log 2> & 1

  • ls -s1h >> serverstart.log 2> & 1

  • exportation réponse = "n"

  • écho ""

  • read -t 6 -p "Sur le point de démarrer le serveur. Forcer la réinstallation (y / n)?"

  • si [[ « $answer » =~ ^([yY][eE][sS]|[yY]) + $]]; ensuite

  • echo "INFO: l'utilisateur a choisi de réinstaller manuellement les fichiers du serveur" >> serverstart.log 2> & 1

  • echo "L'utilisateur a choisi de réinstaller manuellement les fichiers du serveur"

  • install_server

  • Fi

  • check_dir

  • check_connection

  • check_binaries

  • # boucle pour redémarrer le serveur et vérifier la fréquence des plantages

  • a = 0

  • last_crash = $ ((SECONDS))

  • bien que vrai faire

  • start_server

  • b = $?

  • si [ « $b » -eq « 0 » ]; ensuite

  • a = 0

  • autre

  • maintenant = $ ((SECONDES))

  • diff = $ (($ now- $ last_crash))

  • si [ « $diff » -gt « 3600 » ]; ensuite

  • a = 1

  • autre

  • a = $ ((a + 1))

  • Fi

  • last_crash = $ ((SECONDS))

  • Fi

  • si [ « $a » -eq $CRASH_COUNT ]; ensuite

  • echo "Le serveur a planté plusieurs fois"

  • echo "ERREUR: le serveur a échoué et trop de démarrages successifs." >> serverstart.log 2> & 1

  • sortie 0

  • Fi

  • exportation réponse = "y"

  • echo "Le serveur va redémarrer dans environ 10 secondes. Aucune entrée requise …"

  • read -t 12 -p "Redémarrer maintenant (y) ou sortir du shell (n)?" réponse

  • si [[ « $answer » =~ ^([yY][eE][sS]|[yY]) + $]]; ensuite

  • echo "INFO: l'utilisateur a annulé le redémarrage; quitter le shell" >> serverstart.log 2> & 1

  • sortie 0

  • Fi

  • # re-valider les choses à chaque redémarrage du serveur

  • check_dir

  • check_connection

  • check_binaries

  • echo "INFO: le serveur redémarre automatiquement à partir de" >> serverstart.log 2> & 1

  • echo "Redémarrage maintenant!"

  • terminé

  • Commentaires

    Laisser un commentaire

    Votre commentaire sera révisé par les administrateurs si besoin.