web-dev-qa-db-fra.com

comment obtenir l'identification de processus d'application de démarrage de printemps

J'ai remarqué que Spring Boot imprimait l'identifiant du processus dans le journal lors de son démarrage. Maintenant, je veux écrire un script pour tuer ce processus en utilisant ce pid et redémarrer l'application. Spring Boot fournit-il une api pour obtenir ce pid? Merci!

8
walsh

Spring Boot fournit la classe ApplicationPidFileWriter, qui écrira ensuite le PID dans un fichier. Vous pouvez l'activer en l'ajoutant en tant qu'écouteur à l'application SpringApplication:

SpringApplication springApplication = new SpringApplication(DemoApplication.class);
springApplication.addListeners(new ApplicationPidFileWriter());
springApplication.run(args);

Le constructeur de ApplicationPidFileWriter peut également prendre un objet String ou File avec un nom de fichier personnalisé. Ensuite, vous pouvez lire le PID de ce fichier et l’utiliser dans vos scripts.

16
dunni

j'ai essayé ci-dessous: -

SpringApplication application=new SpringApplication(StartofdayApplication.class);
application.addListeners(new ApplicationPidFileWriter(new File("C:\\temp\\StartofdayApplication.pid")));
application.run(args);

Mais recevoir un avertissement car ApplicationPidFileWriter est obsolète, ma version de printemps est 1.4.7, existe-t-il un moyen alternatif d’obtenir les mêmes résultats?.

0
user3797766

Vous pouvez exécuter la commande tasklist pour répertorier les processus actifs et leurs identifiants (PID) apparaîtront.

Vous pouvez aussi les écrire dans un fichier avec le script:

tasklist /v txt > filename.txt

Ensuite, vous pouvez utiliser le script pour lire le fichier et obtenir le pid.

Finalement, vous utiliseriez le script pour tuer le processus.

0
Amr Arafat