2016-11-29 5 views
6

Я заметил, что весенняя загрузка напечатала идентификатор процесса в журнале во время его запуска. Теперь я хочу написать сценарий, чтобы убить этот процесс с помощью этого pid и снова запустить приложение. Загружает ли Spring Boot любой api для получения этого pid? Благодаря!Как получить идентификатор процесса приложения загрузки весны

+0

Windows или Linux? –

+0

@AmrArafat Windows – walsh

+0

Идентификатор процесса записывается в файл. Вы можете прочитать этот файл, чтобы получить pid. –

ответ

12

Spring Boot предоставляет класс ApplicationPidFileWriter, который затем записывает PID в файл. Вы можете активировать его, добавив его в качестве слушателя к SpringApplication:

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

Конструктор ApplicationPidFileWriter также может принимать строку или File объект с пользовательским именем. Затем вы можете прочитать PID из этого файла и использовать его в своих сценариях.

+1

Отличное решение! Это работает! Спасибо! – walsh

+0

это не работает для меня. Журнал также записывается в файл pid. Вы столкнулись с такой ситуацией? – mayooran

+0

Создайте новый вопрос и предоставьте соответствующую информацию (фрагменты кода и т. Д.). – dunni

0

Вы можете выполнить команду tasklist, чтобы отобразить активные процессы, и их идентификаторы (PID) появятся.

Вы также можете записать их в файл с в сценарии:

tasklist /v txt > filename.txt 

После этого, вы можете использовать скрипт для чтения файла и получить идентификатор процесса.

В конце концов вы использовали бы скрипт, чтобы убить процесс.

0

я попытался ниже: -

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

Но получить предупреждение, как ApplicationPidFileWriter осуждается, моя весна версия 1.4.7, есть ли альтернативный способ для того чтобы достигнуть то же самое.

+0

не отвечайте на вопрос. Вы можете [искать похожие вопросы] (https://stackoverflow.com/search) или ссылаться на связанные и связанные вопросы в правой части страницы, чтобы найти ответ. Если у вас есть связанный, но другой вопрос, задайте новый вопрос (https://stackoverflow.com/questions/ask) и включите ссылку на эту страницу, чтобы помочь обеспечить контекст. См.: [Задавайте вопросы, получайте ответы rs, без отвлечения] (https://stackoverflow.com/tour) – Sneha

Смежные вопросы