[Tutorial] - Linux Bash-Script zum Craftbukkit starten

Dieses Thema im Forum "Tutorials" wurde erstellt von DevNull, 20. August 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. DevNull
    Offline

    DevNull

    Registriert seit:
    5. August 2012
    Beiträge:
    107
    Ort:
    /
    Mir ist grad warm und ich kann nicht schlafen,
    also mach ich mal ein kleines Tutorial.

    Viele Serverinhaber benutzen wie ich Linux, Ich persönlich finde lange Befehle eingeben langweilig.
    deswegen hab ich mir ein keines Bash-script gebastelt was mir alles n bissel erleichtert.

    Code (Text):
    1. #!/bin/sh
    2. case "$1" in
    3.         start)
    4.                 screen -A -m -d -S minecraft_server java -Xmx8192M -Xms8192M -jar /home/lexat/mc_new/craftbukkit.jar
    5.                 echo "Server wird gestartet, screen -r eingeben um den Serverlog anzuzeigen."
    6.                 ;;
    7.         stop)
    8. screen -S minecraft_server -X stuff $'save-all\n'
    9.                 echo "Der Save-All-Befehl wurde an den Server gesendet."
    10.                 screen -S minecraft_server -X stuff $'stop\n'
    11.                 echo "Der Stop-Befehl wurde an den Server gesendet."
    12.                 ;;
    13.         clear)
    14.                 echo -n > /home/lexat/mc_new/server.log
    15.                 echo "server.log wurden geleert."
    16.                 ;;
    17.         view)
    18.                 screen -r
    19.                 ;;
    20.         backup)
    21.                 tar cfv /home/lexat/backups/mc_backups/serverbackup.tar /home/lexat/mc_new
    22.                 echo "Serverbackup beendet! Beginne mit dem komprimieren."
    23.                 gzip /home/lexat/backups/mc_backups/serverbackup.tar
    24.                 echo "Das eben erstellte Backup wurde erfolgreich komprimiert."
    25.                 ;;
    26.         *)
    27.                 echo "Verwende: ${0} {start|stop|clear|backup|view}"
    28.                 exit 2
    29. esac
    30. exit 0
    31.  
    Ich habe die Pfade im angezeigtem Code absichtlich nicht verändert damit man leichter
    nachvollziehen kann was hier passiert.

    Für diese Art Script reicht es aus, z.B. direct in der Konsole
    einen Editor zu starten und den Inhalt des Scriptes hineinzuschreiben.
    das ganze wird dann z.B. unter dem Namen "startscript.sh" abgespeichert
    und mit dem Befehl "chmod +x startscript.sh" ausführbar machen.
    (wie man diese datei dann startet findet ihr am Ende das Tutorials.)

    Das Script ist in mehrer Abschnitte eingeteilt,
    als erstes der "Header" der nix weiter aussagt, als das es sich um ein SH Script handelt.
    Code (Text):
    1. #!/bin/sh
    Jetzt kommt eine Zeile die einfach ausgedrückt die Überprüfung von angegebenen Parametern startet.
    Code (Text):
    1. case "$1" in
    Nun zur eigendlichen Überprüfung, will man z.B. sicherstellen das der Parameter "start" ist
    fängt man mit
    Code (Text):
    1. start)
    an "start ist in diesem fall der Parametername.
    nun folgen die Befehle die ausgeführt werden sollen wenn der Parameter übereinstimmt.
    in meinem Fall wird der Server in einem Screen gestartet und danach die Meldung ausgegegben,
    dass der Server gestartet wird.
    Code (Text):
    1.                 screen -A -m -d -S minecraft_server java -Xmx8192M -Xms8192M -jar /home/lexat/mc_new/craftbukkit.jar
    2.  
    3.                 echo "Server wird gestartet, screen -r eingeben um den Serverlog anzuzeigen."
    wenn es noch andere Mögliche Parameter gibt, muss jetzt dafür gesorgt werden, dass das Script bzw. der Interpreter weiss,
    das jetzt der nächste Parameter und die dazugehörigen Befehle kommen.
    Dies geschiet einfach durch zwei ";"
    Code (Text):
    1. ;;
    War dies jedoch der letzte mögliche Parameter benötigt man diesen Schritt nicht.
    mit
    Code (Text):
    1. esac
    2.  
    3. exit 0
    wird das Script nun Abgeschlosssen.

    Ist das Script nun fertig und mit chmod direkt ausführbar gemacht,
    kann man es einfach mit "./dateiname" starten.

    im Fall von meinem Script was ich oben gepostet habe,
    wird beim Ausführen von:
    "./startscript.sh start" Der MC-Server wird gestartet und die Meldung ausgegeben das der MC-Server gestartet wurde.
    "./startscript.sh stop" Der Befehl "stop" direkt an den Screen geschickt was den MC-Server veranlasst sich zu beenden.
    "./startscript.sh clear" Die Datei "server.log" geleert.
    "./startscript.sh backup" ein Backup des Minecraftservers erstellt in einem TAR Archiv zusammengefasst und mit gzip komprimiert.
    "./startscript.sh view" der Screen geöffnet um die Konsole vom MC-Server zu sehen.

    Sollte kein Parameter angegeben werden, wie z.B. "start" oder "stop"
    wird die Meldung ausgegeben wie denn das Script zu Benutzen ist.
    Verwende: ./startscript.sh {start|stop|clear|backup|view}

    Ich hoffe es hilft wenigstens ein paar Leuten weiter,

    g. DevNull aka LeXaT

    /edit auf wunsch von Jobsti "save-all" in den Stopbefehl eingebaut
     
    #1
  2. DevNull
    Offline

    DevNull

    Registriert seit:
    5. August 2012
    Beiträge:
    107
    Ort:
    /
    erikmarcel123

    bevor du irgendwo im Forum postest oder einen Thread eröffnest solltest du
    die ForenRegeln lesen die sind da -> Foren- und Verhaltensregeln
    zu finden.
    Wenn du Probleme mit deinem Server hast, solltest du
    einen Thread in der Passenden Kategorie eröffnen und
    dort eine Beschreibung deines Problems angeben.

    PS: "geht nicht" ist keine Problembeschreibung!

    g. DevNull
     
    #2
  3. Jobsti
    Offline

    Jobsti

    Registriert seit:
    18. August 2011
    Beiträge:
    1.226
    Ort:
    Steinau (Hessen)
    Minecraft:
    Jobsti
    Kompressions-Level kannste noch mit angeben, somit kann man wählen ob Vollgas, oder einfach nur ohne Kompression packen, für schwache Server.

    Vor dem /stop, sollte definitiv erst ein /save-all kommen!
     
    #3
  4. Cabraca
    Online

    Cabraca

    #4
  5. DevNull
    Offline

    DevNull

    Registriert seit:
    5. August 2012
    Beiträge:
    107
    Ort:
    /
    na ganz einfach weil ich es nicht mag von der Stange zu kaufen ;)
     
    #5
Status des Themas:
Es sind keine weiteren Antworten möglich.