Ausführen, sh Datei aus Java

Ich versuche zum ausführen einer sh-Datei über den folgenden code (CentOS Maschine btw)

Runtime.getRuntime().exec("sh " + file.getPath());

Ich benutze diesen code für windows und es funktioniert

Runtime.getRuntime().exec("cmd /c start " + file.getPath());

Könnte es sein, denn ich bin mit dem Bildschirm in der .sh-Datei? Ich bin auch mit dem java-Befehl zum starten des server, also vielleicht brauche ich diese?

Hier der Inhalt der sh-Datei

#!/bin/sh
BINDIR=$(dirname "$(readlink -fn "$0")")
cd "$BINDIR"
screen -S PrivateServer java -Xms2048M -Xmx2048M -jar somejar.jar -o true

Ich bin auch dieser code ausgeführt von einem shutdown-hook, könnte dies das Problem sein? Dies ist beabsichtigt, da die software einen game-server und es ist bestimmt so, dass der Benutzer einen Neustart-Befehl oder automatisch neu starten, ohne setup alles selbst.

Edit: ich entschied mich für die Ausgabe der Fehler in einer Textdatei und diese "Müssen angeklemmt werden." irgendwelche Ideen? Ich glaube, das ist ein Problem, das zu tun mit die Verwendung von screen.

  • Sind Sie sicher, dass die Datei ausführbar ist (z.B. chmod +x filename)? Überlegen Sie auch, mit getRuntime().exec(new String[] {"sh",file.getPath()});
  • Vielleicht ist die Schale nicht Parsen der Kommandozeile richtig. Was ist der Wert von file.getPath()? Überprüfen, dass die Datei ausgeführt wird, mit einer geeigneten Umgebung (path, etc.) Versuchen Sie eine einfache sh-Datei (z.B., eine, die meldet nur, dass es lief).
  • Ja die Datei ausführbar ist, wie ich es bin, der Sie ausführt, von der Konsole aus
  • Tun, könnte dies etwas mit der Tatsache zu tun, dass ich bin läuft diese in einen shutdown-hook? Es soll ein anderes Programm, dass wird offen bleiben, bis Sie beendet wird. Dies ist gedacht als ein server-Befehl, so dass der Benutzer kann den server neu starten, über einen Befehl.
  • Ich endlich den Fehler gefunden, entschieden, um es bei der Ausgabe einen Fehler melden und diese "Müssen angeklemmt werden." So wie ich das beheben kann?
  • versuchen Sie, fügen Sie -t zu den sh - Befehl serverfault.com/questions/21806/...

InformationsquelleAutor Keir Nellyer | 2013-02-20
Schreibe einen Kommentar