Java über SSH

ScopeBot

Mitglied
Hey, ich habe Online einen vServer mit Ubuntu, mit dem ich mich über MobaXterm verbinde.
Auf diesem habe ich mehrere Minecraft Server laufen, unter anderem auch in der Neuen Version,
wofür ich Java 17 brauche. Damit die verschiedenen Server im Hintergrund laufen lassen kann und sich nicht schließen,
benutze ich das Programm Screen. Jetzt ist aber das Problem, dass sich die Konsole gleich noch in Java öffnet.
Wenn ich diese Schließe oder die Verbindung mit MobaXterm beende, schließt sich der Server.
Ist es möglich die Konsole von Java zu unterbinden?
Mit freundlichen Grüßen,
Jannis
 

Anhänge

  • Screenshot 2021-12-04 130749.png
    Screenshot 2021-12-04 130749.png
    351 KB · Aufrufe: 16
nohup macht auch nichts anderes als screen nicht auch schon macht.

Das Problem jetzt ist ja das X11 Fenster, das sich öffnet (So ich das rictig verstanden habe). Also musst Du schauen, ob die Software so gestartet werden kann, dass kein Fenster geöffnet wird oder Du kannst auf dem Server auch ein X11 laufen lassen (z.B. Xvfb).

Das hat aber alles nichts mit Java Programmierung zu tun.
 
Screen ist ein Tool, mit dem Du sozusagen mehrere virtuelle Terminals hast. Die sind durchnummeriert und Du kannst zwischen den einzelnen Anzeigen blättern. Wenn die Verbindung abbricht, dann laufen die Prozesse unteralb weiter (wie bei nohup), aber Du kannst eine neue Screen Instanz starten und diese Session bekommen - dann hast Du die Ausgabe und so erneut.

Das ist recht praktisch und ich verwende es immer sehr gerne. Ist halt sinnvoll, wenn die Verbindung mal abbricht und man dann genau da weiter machen kann, wo man war.
 
Ich verstehe das Problem nicht so richtig. Wenn man ein Programm mit & am Ende des Befehls startet wird das Programm in den Hintergrund verlegt. Es wird auch dann nicht beendet, wenn die SSH-Sitzung endet.
In deinem Fall also: /usr/lib/jvm/java-17-oracle/bin/java -Xmx1028M -Xms1028M -jar spigot-1.18.jar &
Code:
man bash:

    If a command is terminated by the control operator &,
    the shell executes the command in the background in a
    subshell. The shell does not wait for the command to
    finish, and the return status is 0.
Zusätzlich kann man die Ausgabe ins Nirwana umleiten: > /dev/null 2>&1
also: /usr/lib/jvm/java-17-oracle/bin/java -Xmx1028M -Xms1028M -jar spigot-1.18.jar > /dev/null 2>&1 &
 
Zuletzt bearbeitet:
Also das Problem st doch klar: Es gibt ein Fenster und wenn die Verbindung geschlossen ist, dann wird auch dieses Fenster geschlossen ud damit das Programm beendet.

Und nein - das & startet eine Applikation im HIntergrund, aber die Verknüpfung mit dem Terminal ist in der Regel noch immer vorhanden und wenn das Terminal beendet wird, dann wird auch die Applikation beendet. Daher ja auch der Ratschlag mit dem nohup. Aber da ja explizit Screen schon genannt wurde, ist das alles schlicht uninteressant. Nicht von dem löst das Problem.
 
Also das Problem st doch klar: Es gibt ein Fenster und wenn die Verbindung geschlossen ist, dann wird auch dieses Fenster geschlossen ud damit das Programm beendet.

Und nein - das & startet eine Applikation im HIntergrund, aber die Verknüpfung mit dem Terminal ist in der Regel noch immer vorhanden und wenn das Terminal beendet wird, dann wird auch die Applikation beendet. Daher ja auch der Ratschlag mit dem nohup. Aber da ja explizit Screen schon genannt wurde, ist das alles schlicht uninteressant. Nicht von dem löst das Problem.
Ja ich habe das noch mal gegoogelt, es ist bei mir anders eingestellt, mit shopt | grep hupon sieht man die Einstellung. SIGHUP wird bei mir nicht an die Prozesse gesendet, wenn das Terminal geschlossen wird.
 
Der Parameter java -Xmx1028M -Xms1028M -jar spigot-1.18.jar --nogui verhindert die graphische Konsole.
$java -jar spigot-1.18.jar --help
--nogui Disables the graphical console
 

Neue Themen


Zurück
Oben