Spigot auto restart script

Dieses Thema im Forum "Technischer Support" wurde erstellt von Minerwiesi, 21. September 2014.

  1. Minerwiesi
    Offline

    Minerwiesi

    Registriert seit:
    9. Oktober 2012
    Beiträge:
    7
    So ich habe auf meinen root server einige Minecraft server. Und ich möchte gerne, dass wenn zb eine Runde Survival Games vorbei ist der server nach dem stop automatisch restartet. Mein start.sh datei sieht folgender maßen aus:
    #!/bin/bash
    while test $# -gt 0; do
    case "$1" in
    "-IP")
    IP="$2"
    shift;;
    "-PORT")
    PORT="$2"
    shift ;;
    "-RAM")
    RAM="$2"
    shift ;;

    esac
    shift
    done

    echo Serverip wird ueberprueft...
    grep server-ip= server.properties &>/dev/null
    if [[ $? -eq 0 ]]; then # Vorhanden!
    sed -i server.properties -e "s/^\(server-ip=\).*$/\1${IP}/"
    else # Nicht vorhanden!
    echo "server-ip=${IP}" >> server.properties
    fi

    echo Port wird ueberprueft...
    grep server-port= server.properties &>/dev/null
    if [[ $? -eq 0 ]]; then # Vorhanden!
    sed -i server.properties -e "s/^\(server-port=\).*$/\1${PORT}/"
    else # Nicht vorhanden!
    echo "server-port=${PORT}" >> server.properties
    fi

    echo Stoppen alter Prozesse...
    while [ -n "$(ps ax | grep $IP | grep java | grep $PORT | awk '{print $1}')" ];do
    echo Kill Prozess $(ps ax | grep $IP | grep java | grep $PORT | awk '{print $1}')
    kill -9 $(ps ax | grep $IP | grep java | grep $PORT | awk '{print $1}')
    done
    echo

    echo Arbeitsspeicher wird ueberprueft...
    echo Minecraft Server wird gestartet...

    let RAM=(RAM*102)
    echo "####Hoehe des Arbeitsspeichers: $RAM MB####"
    java -jar -Xmx"$RAM"M -XX:+UseConcMarkSweepGC -XX:MaxPermSize=128M -XX:+CMSIncrementalPacing -XX:parallelGCThreads=2 -XX:+AggressiveOpts -XX:+UseParNewGC spigot1710.jar $IP $PORT


    Und könnte man hier irgendwie einbauen, dass der server von selbst startet?
     
    #1
  2. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Du musst einfach, wenn die Runde vorbei ist "/restart" ausführen lassen. Spigot hat dieses schöne Command ja :)
    Dazu reicht ein einfaches startscript, dass du im ordner des Servers positionierst und entsprechend der spigot.yml benennst.
     
    #2
  3. Minerwiesi
    Offline

    Minerwiesi

    Registriert seit:
    9. Oktober 2012
    Beiträge:
    7
    Wie würde das Script aussehen?
    weil seit ein paar tagen probier ich dass es klappt :(
     
    #3
  4. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Sprich zb:

    Code (Text):
    1. #!/bin/sh
    2.             while true
    3.             do
    4.                 java -Xmx1024M -Xms1024M -jar spigot.jar
    5.                 echo "If you want to completely stop the server process now, press Ctrl+C before the time is up!"
    6.                 sleep 5
    7.                 echo "Rebooting now!"
    8.             done
    Oder einfach:

    Code (Text):
    1. #!/bin/sh
    2. java -Xmx1024M -Xms1024M -jar spigot.jar
     
    #4
  5. Minerwiesi
    Offline

    Minerwiesi

    Registriert seit:
    9. Oktober 2012
    Beiträge:
    7
    Ne das funktioniert nicht. Weil ich glaub das liegt dran, dass im gameserver webinterface ala startbefehl f
     
    #5
  6. Minerwiesi
    Offline

    Minerwiesi

    Registriert seit:
    9. Oktober 2012
    Beiträge:
    7
    *als startbefehl folgendes steht:
    ./gsmod.sh -IP gsip -PORT gsport -RAM gsplayer
     
    #6