Starten und Stoppen einer Spring-Boot Anwendung

Wie kann ich die Prozess-ID meiner Spring-Boot Anwendung beim Starten auslesen, so dass ich sie sp√§ter √ľber eine bat-Datei terminieren kann?

Mit Linux geht das relativ einfach mit:

#!/bin/bash
javaw -jar app.war & echo $! > ./pid.file &

Damit kann ich eine Applikation starten und die Prozess-ID in der pid.file Datei speichern. Damit habe ich auch die Möglichkeit die Anwendung gezielt zu schliessen:

#!/bin/bash
kill $(cat ./pid.file)

Wie funktioniert aber sowas unter Windows? Es gibt zumindest keine Möglichkeit - soweit ich es gesehen habe - um eine pid-Datei mit einer Prozess-ID zu erstellen.

Noch keine Stimmen abgegeben
Noch keine Kommentare
  • 3 Apr. 2020

    Am einfachsten liest man die Prozess-Id der Anwendung mit den Bordmitteln von Spring Bott mit Hilfe von ApplicationPidFileWriter aus:

    // ...
    import org.springframework.boot.context.ApplicationPidFileWriter;
    // ... 
    public static void main(final String[] args) {
    	SpringApplication app = new SpringApplication(App.class);
    	app.addListeners(new ApplicationPidFileWriter("app.pid")); 
    	app.run(args);
    }
    

    In der "app.pid" ist dann die Prozess Id gespeichert und damit kann man mit einer bat-Datei die Anwendung terminieren:

    set /p pid=< app.pid
    echo %pid%
    TSKILL %pid%
    

    In der ersten Zeile wird die Prozess-Id aus der app.pid Datei ausgelesen und dann mit tskill der Prozess beendet.

    Abgestimmt in Gute Beispiele, Verständlich
    Noch keine Kommentare