# RAM à allouer au serveur export MAX_RAM = "8G" # Nom du fichier pour forge ja – Resoudre les problemes d’un serveur MineCraft
# 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