• 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 Server-Startscript

Minecraft Version
Java

Tom_069

Minecrafter
Registriert
28 Januar 2020
Beiträge
3
Diamanten
300
Hallo an alle,
ich muss gleich mal sagen, dass ich absoluter Neuling bin was Linux betrifft.
Ich habe mir einen Root-Server (Debian 10) zugelegt und bisher Minecraft manuell über ein einfaches Startscript gestartet. Nun möchte ich Minecraft per Crontab automatisch starten und beenden.

start.sh:
#!/bin/bash

#Insert path to minecraft_server.jar here
DIR=/home/Ordner/Citybuild/
s_jar="spigot-1.12.2.jar"
r_time=30

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

case "$1" in

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

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


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

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

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

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

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

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


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

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


restart)
#check if there is a screen called "Citybuild"
is_it_running=`screen -ls | grep Citybuild`
if [ "$is_it_running" != "" ]
then
  echo "*** Sending message to players, that server will restart in $r_time sec"
  screen -dr Citybuild -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 Citybuild -p 0 -X stuff "$(printf "save-all\r")"
  screen -dr Citybuild -p 0 -X stuff "$(printf "say Server wird neugestartet.\r")"
  sleep 5
  echo "*** Stopping" $is_it_running "now."
  screen -dr Citybuild -p 0 -X stuff "$(printf "stop Wir sind gleich wieder da\r")"

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

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

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

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


Ich habe mir hier ein Script kopiert und für mich angepaßt, den Code kopiert und in nano eingefügt und gespeichert.
Wenn ich nun "scriptname.sh start" eingebe um dan Server manuell zu starten bekomme ich die Meldung "Kommando nicht gefunden".
Woran kann das liegen?
Danke schon mal im voraus

Lg
Tom_069
 

Tom_069

Minecrafter
Registriert
28 Januar 2020
Beiträge
3
Diamanten
300
Mit
start.sh:
./scriptname.sh
wird die Datei ausgeführt, es kommt auch die Meldung das ich mit screen -r wechseln kann, aber wenn ich screen -ls eingebe wird der screen nicht aufgeführt.
Es sieht so aus als würde die . jar nicht ausgeführt aber ich finde den Fehler nicht.
Lg
Tom_069
 
Oben