• 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!

Restart Script / start.sh

peaceguy

Schafhirte
Registriert
17 Oktober 2013
Beiträge
139
Diamanten
0
Hallo zusammen,

folgendes Problem: Der /restart Befehl funktioniert nicht. Das liegt schätzungsweise daran, dass der Server in einer screen Session läuft und deswegen mein Startscript nicht richtig aufgerufen werden kann. Meine start.sh enthält folgendes:
start.sh:
screen -AmdS minecraft java -Xms10240M -Xmx10240M -jar /home/minecraft/spigot-1.13.2.jar
Wahrscheinlich brauch ich jetzt noch ein zweites Script, aber das übersteigt leider meine Fähigkeiten. Kann mir da jemand aushelfen?


Liebe Grüße
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Vorteilhaft ist auch, dass der Minecraft-Server auch im Falle eines Absturzes oder sonstigen unerwarteten Ausfalls sofort neustartet.
Ich würde das als großen Nachteil sehen, aber jeder wie er meint.

Du musst einfach ein "restart-script" in der spigot.yml definieren, wird auch im Wiki erklärt (https://www.spigotmc.org/wiki/spigot-configuration/). Ich weiß leider nicht wie screen damit umgeht, wenn sein Prozess beendet wird. Entweder muss in diesem Skript auch die screen Session gestartet werden oder nicht. Das müsstest du selbst ausprobieren, nur eine der beiden Möglichkeiten ist richtig. Also prüfe beide genau.

Eine Schleife hat im Restart Skript jedenfalls nichts verloren, sonst würdest du bei jedem /restart einen Serverprozess mehr haben.
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Das ist mir klar. Ein Skript für die Restart-Funktion sollte natürlich anders aufgebaut sein; ich habe lediglich eine alternative Lösung vorgeschlagen.
War auch wirklich nur als Hinweis für den TE gedacht, da ich gerade selbst versucht habe rauszufinden, wie Spigot den neuen Serverprozess erzeugt und im Internet nur irgendwelche Schleifen gefunden habe, die man für /restart nicht will. Hab mir nur gespart das ganze zu erklären, weil man dafür mehr Ahnung von Prozessmanagment haben müsste, was der TE vermutlich nicht hat.

Wieso ist das ein Nachteil? Problematisch ist eher eine stundenlange Downtime, wenn zum Zeitpunkt des Absturzes weder der Betreiber noch ein Sysadmin anwesend ist. Durch diesen Ansatz ist der Server sofort wieder verfügbar und die Ursache kann später behoben werden. Ich kenne keinen Fall, in dem ein Neustart zusätzliche Probleme verursachen würde. Mein Beispiel lässt sich noch beliebig um Wartezeiten zwischen Neustarts (sleep), Begrenzung der Startversuche, Logging/Alarmierung etc. erweitern.
Ein Fehler bedeutet, dass etwas schief lief. Wenn du den Server einfach wieder neustartest hast du keine Ahnung in welchem Zustand sich der Server befindet. Vielleicht wurden Dateien korrumpiert. Wenns richtig scheiße läuft haben danach alle User Zugriff aufs Hostsystem. Stell dir z.B. vor du hast ein Plugin dass dir Shellzugriff gibt und da die Rechte nicht richtig geladen wurden, hat nun jeder Spieler darauf Zugriff. Das mag jetzt ein sehr konstruiertes Beispiel sein, aber es ist möglich.

Anders kann man sich auch fragen, was bringt es Usern, wenn sie auf einem kaputten Server spielen können, der vermutlich sowieso zurückgesetzt werden muss. Vor allem kannst du dich danach durch die ganzen Restarts kämpfen und versuchen zu rekonstruieren was jetzt genau alles kaputt gegangen ist.
 

peaceguy

Schafhirte
Registriert
17 Oktober 2013
Beiträge
139
Diamanten
0
Wie das mit dem Restart-Befehl abläuft, weiß ich nicht, eine einfache Lösung für automatische Restarts lässt sich aber durch das folgende Startskript umsetzen (ersetzt deine bereits vorhandene start.sh):
Startskript:
#!/bin/bash
rm STOP
until [ -f STOP ]; do
java -Xms10G -Xmx10G -jar /home/minecraft/spigot-1.13.2.jar
done

Dieses Skript kannst du dann in das Serververzeichnis packen und in einem Screen laufen lassen:
Startbefehl:
cd /home/minecraft/
screen -dmS minecraft sh start.sh

Wenn der Server dann gestoppt wird (ganz normal über /stop), startet er automatisch wieder neu, es sei denn, im Serververzeichnis befindet sich eine Datei namens STOP. Diese kannst du mit touch /home/minecraft/STOP erzeugen. Vorteilhaft ist auch, dass der Minecraft-Server auch im Falle eines Absturzes oder sonstigen unerwarteten Ausfalls sofort neustartet.

Edit:
Durch die Lösung oben bleibt die beim Start erstellte Screen-Session offen und der neugestartete Server läuft ebenfalls darin. Es handelt sich nicht um ein Restart-Script, dass du in die spigot.yml eintragen kannst, sondern bietet unabhängig davon ein ähnliches Ergebnis.

Falls du lieber mit der /restart-Funktion arbeiten willst, reicht dein Startskript eigentlich schon aus. Es wäre allerdings sinnvoller, eine Kopie davon im Serververzeichnis abzulegen. Das Skript erstellt einen neuen Screen, da der Alte durch das Herunterfahren des Servers ebenfalls beendet wird.

Das ist die Lösung, vielen Dank! Die /restart Funktion hat leider nie mit meinem Script funktioniert, aus welchen Gründen auch immer. Ich hab jetzt einfach noch ein Alias angelegt, sodass /restart zu /stop führt und nun klappt alles einwandfrei.
Also nochmal vielen Dank euch beiden!
 
Oben