Résolu Problème script de démarrage

Shaxens

Bucheron
12 Avril 2019
15
0
12
Bonjour, j'ai un petit soucis concernant une ligne de mon script de démarrage que voici :
DEMARRAGE="java -server -d64 -XX:UseSSE=1 -XX:+UseCMSCompactAtFullCollection -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -Xms$MINIMUMRAM -Xmx$MAXIMUMRAM -XX:PermSize=256m -jar $SERVICE nogui"

J'aurais souhaité savoir ce que chaque argument voulais dire (si vous avez un lien qui explique ça m'aiderait aussi)
Evidemment lorsque je lance mon script le serveur ne démarre pas et me met une erreur comme quoi il est impossible de le lancer.

Merci d'avance ;)
 
Après avoir fais pas mal de recherches j'ai l'impression que ce n'est pas la ligne de démarrage mon problème mais le restant de mon script (attention les yeux) :
Code:
#!/bin/bash

#---------------------+
#    Configuration    |
#---------------------+
SCRNNAME="hub"
REPERTOIRE="/home/Update/hub/"
REPERTOIRE_BACKUP="/home/sauvegardes/"
SERVICE="hub.jar"
USER="root"
MINIMUMRAM="2G"
MAXIMUMRAM="4G"

#Ligne de lancement

DEMARRAGE="java -server -d64 -XX:UseSSE=1 -XX:+UseCMSCompactAtFullCollection -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -Xms$MINIMUMRAM -Xmx$MAXIMUMRAM -XX:PermSize=256m -jar $SERVICE nogui"

#---------------------+
#         OS          |
#---------------------+

## Débian
if [ -f /etc/rc.d/init.d/functions ]
 then
 . /etc/rc.d/init.d/functions
fi
## Ubuntu
if [ -f /lib/lsb/init-functions ]
 then
 . /lib/lsb/init-functions
fi

#---------------------+
#      Utilitaires    |
#---------------------+

# Fonction pour charger l'utilisateur
as_user() {
  ME="$(whoami)"
  if [ "$ME" = "$USER" ]; then
    bash -c "$1"
  else
    su - "$USER" -c "$1"
  fi
}

# Est-ce que le serveur tourne ?
is_running() {
  if ps ax | grep -v grep | grep -iv SCREEN | grep $SERVICE > /dev/null; then
    echo "Récupération du PID en cours"
    PID=0
    PID="$(ps ax | grep -v grep | grep -iv SCREEN | grep $SERVICE | awk '{print $1}')"
    return 0
  else
    return 1
  fi
}

#---------------------+
#    Fonctions        |
#---------------------+

# Fonction redémarrage automatique du serveur
mc_restart() {
  if is_running; then
    while is_running; do
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 2 minutes\"\015'"
    sleep 60
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 1 minutes\"\015'"
    sleep 30
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 30 secondes\"\015'"
    sleep 15
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 15 secondes\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 10 secondes\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 5 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 4 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 3 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 2 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 1 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre !\"\015'"
    sleep 3
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"whitelist on\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"kickall\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"save-all\"\015'"
    sleep 3
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"save\"\015'"
    sleep 5
    mc_stop
    sleep 10
    sleep 10
    done
    echo " * $SCRNNAME est en train de redémarrer"
  mc_start
    sleep 60
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"whitelist off\"\015'"
  else
    echo " * [ERREUR] $SCRNNAME ne tourne pas. Impossible de le redémarrer !"
  fi
}

# Fonction pour démarrer le serveur
mc_start() {
  as_user "iptables -F"
    as_user "iptables -X"
  if is_running ; then
    echo " * [ERREUR] $SCRNNAME est déjà en cours d'exécution [PID $PID]. Impossible de le démarrer..."
  else
    echo " * $SCRNNAME n'est pas démarrer, lancement en cours..."
    as_user "cd \"$REPERTOIRE\" && screen -c /dev/null -dmS $SCRNNAME $DEMARRAGE"
    sleep 8
    if is_running; then
      echo " * [OK] $SCRNNAME vient de démarrer [PID $PID]"
    else
      echo " * [ERREUR] Impossible de démarrer $SCRNNAME"
    fi
  fi
}

# Fonction pour stopper le serveur
mc_stop() {
  if is_running; then
    while is_running; do
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"save-all\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 3 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 2 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 1 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre !\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"stop\"\015'"
    sleep 7
    done
    echo " * $SCRNNAME est en train de se stopper..."
  else
    echo " * [ERREUR] $SCRNNAME n'est pas démarrer... Impossible de l'arrêter"
  fi
}

# Fonction pour accéder à la console
mc_console() {
  if is_running; then
    as_user "screen -S $SCRNNAME -dr"
  else
    echo " * [ERREUR] Impossible d'accéder à la console de $SCRNNAME car il n'est pas démarrer !"
  fi
}

mc_server_backup() {
jour=$(date +%d-%m-%Y-%H-%M)
echo "Lancement de la backup"
 as_user "mkdir $REPERTOIRE_BACKUP$jour"
echo "Création de l'espace du backup effectuée"
 as_user "cp -r $REPERTOIRE $REPERTOIRE_BACKUP$jour"
echo "Backup du serveur $SCRNNAME effectuée avec succès"
}

case $1 in
  start)
    mc_start
    mc_console
  ;;
  stop)
    mc_stop
  ;;
  restart)
    mc_restart
    mc_console
  ;;
  console)
    mc_console
  ;;
  remote-start)
    mc_stop
    mc_start
  ;;
  backup)
  mc_server_backup
  ;;
  *)
    echo "Utilisation: {start|stop|restart|console|backup}"
  ;;
esac
exit 1

Et voici les erreurs qui en ressortent depuis putty :

Code:
debian@evony:/home/Update/hub$ sudo ./start.sh start
 * hub n'est pas démarrer, lancement en cours...
 * [ERREUR] Impossible de démarrer hub
 * [ERREUR] Impossible d'accéder à la console de hub car il n'est pas démarrer !

Pour info je suis sous Debian 10 avec openJDK11

Merci

P.S.: -rwxr-xr-x 1 root admin 5968 Nov 10 17:53 start.sh voici les accès de mon script
 
Dernière édition:
Modifie ton message précédent en utilisant des triples antiquotes « ``` » afin d'avoir des blocs de code au lieu d'un truc encore moins lisible que du texte normal.

Est-ce que la commande de base lance le serveur correctement ?
Code:
cd /home/Update/hub/
java -server -d64 -XX:UseSSE=1 -XX:+UseCMSCompactAtFullCollection -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -Xms2G-Xmx4G -XX:PermSize=256m -jar hub.jar nogui
 
Merci pour l'info ! C'est clairement mieux

En tapant la commande directement j'ai cette erreur qui apparaît :
Code:
Unrecognized option: -d64
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Update : Petit a petit j'ai enlevé toutes les erreurs comme au dessus pour arriver à cette ligne de démarrage :
Code:
java -server -XX:UseSSE=1 -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+AggressiveOpts -Xms8G -Xmx12G -XX:PermSize=256m -jar hub.jar nogui
Cette même ligne me renvoie cette info dans la fenêtre :
Code:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: Option AggressiveOpts was deprecated in version 11.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: Ignoring option PermSize; support was removed in 8.0
Error occurred during initialization of VM
Too small maximum heap
 
Dernière édition:
-d64 permet de forcer l'utilisation de Java 64 bits sur Solaris, essaye d'enlever complètement cet argument.

EDIT: tu as un -Xmx trop petit mais avec 12 Go cela ne devrait pas être le cas, vérifie que tu n'as pas fait d'erreur en recopiant (style avoir zappé le G).
 
C'est tout a fait juste j'avais oublié le G pour allouer la RAM
Si ça peut aider quelqu'un voilà le script de démarrage final :
Code:
java -server -XX:UseSSE=1 -XX:ParallelGCThreads=8 -XX:+DisableExplicitGC  -Xms2G -Xmx4G -jar hub.jar nogui
 
Je profite de ta bienveillance désolé mais j'ai un soucis avec le BungeeCord désormais le script est quasi pareil :
Code:
SCRNNAME="BungeeCord"
REPERTOIRE="/home/evony-bungee/"
REPERTOIRE_BACKUP="/home/sauvegardes/"
SERVICE="BungeeCord.jar"
USER="root"
MINIMUMRAM="2G"
MAXIMUMRAM="4G"

#Ligne de lancement

DEMARRAGE="java -server -XX:UseSSE=1 -XX:ParallelGCThreads=8 -XX:+DisableExplicitGC  -Xms$MINIMUMRAM -Xmx$MAXIMUMRAM -jar $SERVICE nogui""


#---------------------+
#         OS          |
#---------------------+

## Débian
if [ -f /etc/rc.d/init.d/functions ]
 then
 . /etc/rc.d/init.d/functions
fi
## Ubuntu
if [ -f /lib/lsb/init-functions ]
 then
 . /lib/lsb/init-functions
fi

#---------------------+
#      Utilitaires    |
#---------------------+

# Fonction pour charger l'utilisateur
as_user() {
  ME="$(whoami)"
  if [ "$ME" = "$USER" ]; then
    bash -c "$1"
  else
    su - "$USER" -c "$1"
  fi
}

# Est-ce que le serveur tourne ?
is_running() {
  if ps ax | grep -v grep | grep -iv SCREEN | grep $SERVICE > /dev/null; then
    PID=0
    PID="$(ps ax | grep -v grep | grep -iv SCREEN | grep $SERVICE | awk '{print $1}')"
    return 0
  else
    return 1
  fi
}

#---------------------+
#    Fonctions        |
#---------------------+

# Fonction redémarrage automatique du serveur
mc_restart() {
  if is_running; then
    while is_running; do
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 2 minutes\"\015'"
    sleep 60
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 1 minutes\"\015'"
    sleep 30
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 30 secondes\"\015'"
    sleep 15
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 15 secondes\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 10 secondes\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 5 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 4 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 3 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 2 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 1 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre !\"\015'"
    sleep 3
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"whitelist on\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"kickall\"\015'"
    sleep 5
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"save-all\"\015'"
    sleep 3
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"save\"\015'"
    sleep 5
    mc_stop
    sleep 10
    sleep 10
    done
    echo " * $SCRNNAME est en train de redémarrer"
  mc_start
    sleep 60
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"whitelist off\"\015'"
  else
    echo " * [ERREUR] $SCRNNAME ne tourne pas. Impossible de le redémarrer !"
  fi
}

# Fonction pour démarrer le serveur
mc_start() {
  as_user "iptables -F"
    as_user "iptables -X"
  if is_running ; then
    echo " * [ERREUR] $SCRNNAME est déjà en cours d'exécution [PID $PID]. Impossible de le démarrer..."
  else
    echo " * $SCRNNAME n'est pas démarrer, lancement en cours..."
    as_user "cd \"$REPERTOIRE\" && screen -c /dev/null -dmS $SCRNNAME $DEMARRAGE"
    sleep 8
    if is_running; then
      echo " * [OK] $SCRNNAME vient de démarrer [PID $PID]"
    else
      echo " * [ERREUR] Impossible de démarrer $SCRNNAME"
    fi
  fi
}

# Fonction pour stopper le serveur
mc_stop() {
  if is_running; then
    while is_running; do
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"save-all\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 3 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 2 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre dans 1 secondes\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"bc &c&lLe serveur redémarre !\"\015'"
    sleep 1
    as_user "screen -p 0 -S $SCRNNAME -X eval 'stuff \"stop\"\015'"
    sleep 7
    done
    echo " * $SCRNNAME est en train de se stopper..."
  else
    echo " * [ERREUR] $SCRNNAME n'est pas démarrer... Impossible de l'arrêter"
  fi
}

# Fonction pour accéder à la console
mc_console() {
  if is_running; then
    as_user "screen -S $SCRNNAME -dr"
  else
    echo " * [ERREUR] Impossible d'accéder à la console de $SCRNNAME car il n'est pas démarrer !"
  fi
}

mc_server_backup() {
jour=$(date +%d-%m-%Y-%H-%M)
echo "Lancement de la backup"
 as_user "mkdir $REPERTOIRE_BACKUP$jour"
echo "Création de lespace du backup effectuée"
 as_user "cp -r $REPERTOIRE $REPERTOIRE_BACKUP$jour"
echo "Backup du serveur $SCRNNAME effectuée avec succès"
}

case $1 in
  start)
    mc_start
    mc_console
  ;;
  stop)
    mc_stop
  ;;
  restart)
    mc_restart
    mc_console
  ;;
  console)
    mc_console
  ;;
  remote-start)
    mc_stop
    mc_start  
  ;;
  backup)
  mc_server_backup
  ;;
  *)
    echo "Utilisation: {start|stop|restart|console|backup}"
  ;;
esac
exit 1
Quand je fais mon sudo ./start.sh start j'ai des erreurs de '"' :
Code:
./start.sh: line 202: unexpected EOF while looking for matching `"'
./start.sh: line 206: syntax error: unexpected end of file
Il y a une syntaxe particulière pour écrire les echo en script sous linux ?

La ligne 206 correspond à la fin de mon fichier, je l'ai supprimé car elle était vide mais j'ai toujours l'erreur
Quand a la ligne 202
Code:
echo "Utilisation: {start|stop|restart|console|backup}"`

Et bien évidemment quand j'en corrige une, une autre apparaît d'où ma question s'il y a une syntaxe a respecter

Et merci pour le script du hub :p
 
Code:
DEMARRAGE="java -server -XX:UseSSE=1 -XX:ParallelGCThreads=8 -XX:+DisableExplicitGC  -Xms$MINIMUMRAM -Xmx$MAXIMUMRAM -jar $SERVICE nogui""
Tu as dédoublé le guillemet fermant.

J'en profite pour répondre à ta question initiale de ce que font les arguments, il te suffit plus ou moins de les regarder sur Google en mettant des guillemets autour pour que Google interprète correctement les caractères non-alphabétiques ; java "-XX:+DisableExplicitGC".
 
J'ai envie de me frapper des fois ...

Pour ma question initiale j'ai regardé entre temps sur google en prenant uniquement le terme et en supprimant les -XX: et je me suis fait mon petit document explicatif

Petite question comment je peux quitter le screen du serveur que je démarre sans éteindre ce dernier, j'ai le raccourci ctrl + c mais il stop le serveur pour me ramener au terminal principal