Wie führe ich ein Shell-Skript aus Java aus und lasse es nach dem Herunterfahren von JVM weiterlaufen?

Ich schreibe ein Plugin, um eine Serveranwendung unter Linux neu zu starten (obwohl ich es unter OSX teste). Ich verwende dazu ein Shell-Skript, mit dem die Anwendung angehalten und anschließend der Tod des Prozesses überwacht wird, sodass zum gegebenen Zeitpunkt sicher ein neues gestartet werden kann.

Mein Skript funktioniert, wenn ich es manuell über die Befehlszeile ausführe. Wenn ich es jedoch aus der Anwendung heraus ausführe, wird der Shell-Prozess zusammen mit der Anwendung beendet.

Ich habe zwei verschiedene Methoden ausprobiert, um den Prozess in Java auszuführen:

String scriptArgs[] = {"sh", "restart.sh", "&"};

    try {
        Runtime.getRuntime().exec(scriptArgs);
    } catch (IOException e) {
        e.printStackTrace();
    }

und

ProcessBuilder processBuilder = new ProcessBuilder("sh", "restart.sh");
    try {
        processBuilder.directory(new File(System.getProperty("user.dir")));
        processBuilder.redirectErrorStream(false);
        processBuilder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

Beide Methoden führten zu demselben Ergebnis: Das Skript wurde aufgerufen, die Anwendung wurde erfolgreich beendet, und es starb, bevor es fortgesetzt werden konnte. Gibt es eine Methode zum Starten einesvollständig unabhängiger Prozess von Java?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage