Frage von dragokaito, 74

Kann man mit java einen linux screen starten?

Hallo,

ich habe ein Java Programm welches ein start script ausführen soll welches einen Minecraft Server starten soll. Dazu benutze ich folgenden Code:

Java: ProcessBuilder pb = new ProcessBuilder("/home/minecraft/servers/mc1_9/start_server.sh"); Process p = pb.start();

Start-Script: #!/bin/sh BINDIR=$(dirname "$(readlink -fn "$0")") cd "$BINDIR" touch /home/minecraft/mc1_9-started && Screen -S test java -Xms2G -Xmx5500M -XX:MaxPermSize=512M -server -XX:ParallelGCThreads=2 -jar minecraft_server.jar && rm /home/minecraft/mc1_9-started

Wenn Java das ausführt wird die Datei erstellt, aber es wird kein screen geöffnet und der Server wird auch nicht gestartet.

Die Frage ist es jetzt also warum wird er nicht gestartet bzw. warum wird kein Screen geöffnet. Und weiß jemand wie ich das Problem lösen kann.

LG Jonas und Frohe Ostern

Antwort
von Linuxhase, 53

Hallo

ich habe ein Java Programm welches ein start script ausführen soll welches einen Minecraft Server starten soll.

Alleine schon diese Beschreibung klingt doch irrsinnig, findest Du nicht!?

Ein Programm das ein Script startet, was soll das bringen, welchen tieferen Sinn hat das? Weshalb willst Du das Script nicht einfach direkt ausführen oder machst es gleich über ein, wie von David3103 beschrieben, über einen Alias?

Java: ProcessBuilder pb = new ProcessBuilder("/home/minecraft/servers/mc1_9/start_server.sh"); Process p = pb.start();

Dazu kann ich nichts sagen weil ich kein Java spreche (und es auch nicht mag)

#!/bin/sh
BINDIR=$(dirname "$(readlink -fn "$0")")
cd "$BINDIR"
touch /home/minecraft/mc1_9-started && \
Screen -S test java -Xms2G -Xmx5500M -XX:MaxPermSize=512M -server -XX:ParallelGCThreads=2 -jar minecraft_server.jar && \
rm /home/minecraft/mc1_9-started
  1. Was soll readlink da anstellen, den Scriptnamen als Pfad benutzen?
  2. wozu die Datei mc1_9-started anlegen?
  3. Screen  ist falsch, es heißt screen
  4. Zum Aufruf selbst kann ich nichts sagen, kommt mir aber seltsam und sehr lang vor
  5. Jetzt wird die Datei wieder gelöscht, weshalb?

Linuxhase

Kommentar von dragokaito ,

Es soll bewirken dass man auf einer JSF Seite auf start klicken kann und dann der server startet.

Die Datei wird erstellt damit man ablesen kann ob der Server an ist und gelöscht wird sie erst wenn der screen abbricht oder beendet wird

Kommentar von Linuxhase ,

@dragokaito

Es soll bewirken dass man auf einer JSF Seite auf start klicken kann und dann der server startet.

Das macht man doch mit php , so jedenfalls macht es mein Sohn schon lange.

Die Datei wird erstellt damit man ablesen kann ob der Server an ist und gelöscht wird sie erst wenn der screen abbricht oder beendet wird

Dann doch lieber pidof oder ps in einer Schleife benutzen um zu prüfen ob ein Prozess läuft.

pidof PROGRAMMNAME
ps ax | grep PROGRAMMNAME

Linuxhase

Antwort
von David3103, 46

Was soll das Java Programm denn bewirken? Soll es einfach nur das script ausführen? Dann kannst du das auch einfach übers Terminal starten. Wenn es dir zu lang ist, dann erstellt dir ein Alias.

$ gedit ~/.bashrc

Dort fügst du dann am Ende eine Zeile ein:

alias startServer[oder wie auch immer du es nennen willst]='sh /home/minecraft/servers/mc1_9/start_server.sh'

Jetzt kannst du das Script über den eingetragenen Namen aufrufen.

Kommentar von dragokaito ,

Es soll bewirken dass man auf einer JSF Seite auf start klicken kann und dann der server startet

Keine passende Antwort gefunden?

Fragen Sie die Community