Starte und Stoppe Prozess in Screen über SSH

Osiris1

Lt. Junior Grade
Registriert
Feb. 2008
Beiträge
351
Ich versuche gerade meinen Minecraft Server über Scripts fernzusteuern.

Der MinecraftServer läuft auf einem Intel Nuc
Die "Fernsteuerung" ist mein Pi das ich über SSH von meinem Handy aus bediene (habe ein eigenes App geschrieben).

ServerStart.sh auf dem Pi
Code:
ssh user@Nuc screen sh StartMinecraft.sh

ServerStop.sh auf dem Pi
Code:
ssh -t user@Nuc screen -x
stop

Unter der Annahme, dass immer nur ein Screen läuft, und in diesem der Minecraft Server läuft.

Das Starten funktioniert wunderbar. Eventuell bleibt die ssh session offen weil der Prozess ja nicht abgeschlossen ist. Das muss ich mir noch anschauen.

Leider kann ich mit dem Script den Server nicht stoppen. screen -x wird zwar ausgeführt und ich lande im Server Prozess, aber der stop Befehl wird leider nicht anschließend ausgeführt. Was mache ich falsch? Würde mir hier der -f Parameter für ssh etwas helfen? Oder ist der für etwas anderes gedacht?

lg Osiris
 
Ich wuerde das anders machen.

Screen mit
screen -S mcscreen StartMinecraft.sh
starten. Ueber das -S mcscreen laesst sich dieser Screen dann spaeter identifizieren.
Und stoppen mit:
screen -XS mcscreen quit
-X sendet den command (in diesem Fall quit) direkt an den Screen. Dieser wird ueber mcscreen identifiziert.

Musst halt aufpassen, dass du den Server nicht 2 mal startest...vielleicht vor einem Start den 2. Befehl sowieso ausfuehren. Wirklich elegant ist das jetzt aber alles nicht...
Je nach OS koenntest du zB einen systemd service machen.
 
Zuletzt bearbeitet:
Das klingt nach einer Idee.

Wenn ich den Screen mit quit beende, wird dann der Minecraft Server auch ordentlich beendet? Oder wird der einfach abgewürgt? (Nicht, dass ich dann fehlerhafte Worlddaten oder ähnliches bekomme...)

lg
 
Zurück
Oben