Starten und Stoppen einer Spring-Boot Anwendung

Mär 16 (00:17)

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.

DaemonThread Apr 3 (15:31)

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.

0 0 0
Noch keine Stimmen abgegeben
Durch die Nutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Außerdem werden teilweise auch Cookies von Diensten Dritter gesetzt. Genauere Informationen finden Sie in unserer Datenschutzerklärung sowie im Impressum.