• Bitte beachte, dass wir eine Serverliste sind!
    Wenn du ein Problem auf einem Server hast (z.B. Entbannantrag, etc), dann ist das Forum hier der falsche Ort.
  • Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Linux Start/Restart Script

T

TheRedPhynix

Guest
Hallöchen, ich habe mir einenvServer besorgt. Das OS von dem vServer ist Debian 8.

Ich habe auf dem vServer ein Minecraft Server installiert aber er läuft nur, wenn ich meine PuTTY Konsole offen habe.
Daher brauche ich ein Start bzw. Restart Script, damit der Server automatisch startet und wenn er crasht, er automatisch auch restartet.

Ich habe ebenfalls schon gegoogelt, hat alles bei mir nicht funktioniert.

Und wenn ihr ein Start/Restart Script für mich habt, was mit Screen funktioniert, bitte ein Tutorial, da ich mich mit Screen nicht auskenne.

Lg
TheRedPhynix
 

gaRt3n

Redstoneengineer
Registriert
28 Dezember 2011
Beiträge
49
Alter
37
Diamanten
303
Minecraft
gaRt3n
Hallo @TheRedPhynix

zu aller erst. herzlich willkommen hier auf MCSE. Ich bitte dich bzgl. des Serverbetriebs zu informieren und einzulesen, um kein/e SpamSchleuder/Zombie in einem Botnetz zu werden.

Um Prozesse im Hintergrund laufen zu lassen benötigst du screen.
Bash:
apt-get install screen

Hier hast du ein Startscript welches du nutzen kannst. Bitte Passe es mit einem Editor wie nano oder vim an. Ggf. über WinSCP oder FileZilla wenn du in der Console nicht gerne arbeitest.
Speicher dir dieses script z.B. unter start.sh
Bash:
#!/bin/bash

#Insert path to minecraft_server.jar here
DIR=/PFAD/ZU/DEINER/SERVER/JAR/
s_jar="SERVER.jar"
r_time=30

##############################################################################

case "$1" in

start)
#check if there is a screen called "minecraft"
is_it_running=`screen -ls | grep minecraft`
if [ "$is_it_running" != "" ]
then
  echo "*** There is already a screen called 'minecraft' running. Aborting!"
else
  echo "*** Starting minecraft-Server on screen 'minecraft'"
  cd $DIR
  screen -A -m -d -L -S minecraft java -Xincgc -Xmx512M -XX:+UseConcMarkSweepGC -jar paperclip.jar -o true -h 127.0.0.1 -p 25565 -s 100 --log-append false --log-limit 50000

  #check if it is running now
  status=`screen -ls | grep minecraft`
  if [ "$status" == "" ]
  then
    echo "*** Starting failed!"
  else
    echo "*** Server started successfully!"
    echo "*** You may now connect to console via 'screen -r minecraft'"
    echo $status
  fi
fi
;;


stop)
echo "*** Looking for running minecraft-Server via 'screen'"

#check if there is a screen called "minecraft"
is_it_running=`screen -ls | grep minecraft`
if [ "$is_it_running" != "" ]
then
  echo "*** Running minecraft-Server found:" $is_it_running
  echo "*** Saving chunks with 'save-all'"
  screen -dr minecraft -p 0 -X stuff "$(printf "save-all\r")"
  echo "*** Sending message to players, that server will shutdown in 30 sec"
  screen -dr minecraft -p 0 -X stuff "$(printf "broadcast Server wird in 30sec heruntergefahren...\r")"
  echo "*** Message sent. Wait 30 sec ..."
  sleep 30
  screen -dr minecraft -p 0 -X stuff "$(printf "say Server stoppen ...\r")"
  echo ""
  echo "*** Stopping" $is_it_running "now."
  screen -dr minecraft -p 0 -X stuff "$(printf "stop\r")"

  #wait a while and then test if screen is there
  sleep 10
  status_off=`screen -ls | grep minecraft`

  if [ "$status_off" == "" ]
  then
    echo "*** minecraft-Server stopped!" $status_off
  else
    echo "*** Something went wrong!" $status_off
  fi
else
  echo "*** No screen called 'minecraft' found. Is server really running?"
fi
;;

status)
#check if there is a screen called "minecraft"
is_it_running=`screen -ls | grep minecraft`

if [ "$is_it_running" != "" ]
then
echo "*** Running minecraft-Server found:" $is_it_running
else
echo "*** No screen called 'minecraft' found. Is server really running?"
fi
;;


webstat)
#check if there is a screen called "minecraft"
is_it_running=`screen -ls | grep minecraft`

if [ "$is_it_running" != "" ]
then
echo "1"
else
echo "0"
fi
;;


restart)
#check if there is a screen called "minecraft"
is_it_running=`screen -ls | grep minecraft`
if [ "$is_it_running" != "" ]
then
  echo "*** Sending message to players, that server will restart in $r_time sec"
  screen -dr minecraft -p 0 -X stuff "$(printf "broadcast ServerRestart in $r_time Sekunden!!\r")"
  echo "*** Message sent. Wait $r_time sec ..."
  sleep $r_time
  echo "*** Saving chunks with 'save-all'"
  screen -dr minecraft -p 0 -X stuff "$(printf "save-all\r")"
  screen -dr minecraft -p 0 -X stuff "$(printf "say Server wird neugestartet.\r")"
  sleep 5
  echo "*** Stopping" $is_it_running "now."
  screen -dr minecraft -p 0 -X stuff "$(printf "stop Wir sind gleich wieder da\r")"

  echo "*** Check for stopped Server"
  s_running=`screen -ls | grep minecraft`
  if [$s_running != "" ]
  then
    $s_running="TRUE"
  else
    $s_running="FALSE"
  fi
  while [ $s_running != "TRUE" ]
    do
      sleep 2
      s_running=`screen -ls | grep minecraft`
      if [$s_running != "" ]
      then
        $s_running="TRUE"
      else
        $s_running="FALSE"
      fi
    done

  echo "*** Starting minecraft-Server on screen 'minecraft'"
  cd $DIR
  screen -A -m -d -L -S minecraft java -Xincgc -Xmx512M -XX:+UseConcMarkSweepGC -jar paperclip.jar -o true -h 127.0.0.1 -p 25565 -s 100 --log-append false --log-limit 50000

  #check if it is running now
  status=`screen -ls | grep minecraft`
  if [ "$status" == "" ]
  then
    echo "*** Starting failed!"
  else
    echo "*** Server started successfully!"
    echo "*** You may now connect to console via 'screen -r minecraft'"
    echo $status
  fi
else
  echo "*** No screen called 'minecraft' found. Is server really running?"
fi
;;

*)
echo $"*** Usage: $0 {start|stop|status|restart}"
exit 1
esac

Wenn du eine Abfrage möchtest, ob der Server abgestürtzt ist oder nicht, dann nimmst du einfach folgendes Script und lässt es in einem screen laufen. Natürlich könnte man das auch mit einem Cron überprüfen aber ich möchte dir nicht zu viel zumuten:
Speichere diesen Code z.B. unter dem Namen minecraft.sh
Bash:
while true
do
    ./start.sh start
    sleep 30
done

Dann kannst du mit folgendem Screen einfach laufen lassen. Diese Methode hier ist nicht die Professionelle Methode. Es ist eher getreu dem Motto: If it's dumb and it works, it's not dumb.

Schön ist was anderes. Aber es würde für deine Zwecke reichen.
 
Oben