Возможно ли для процесса java в одном jvm убить / остановить другой процесс java в другом jvm? - PullRequest
5 голосов
/ 13 февраля 2012

Если так, как я могу узнать, какой это процесс (из всех остальных в системе) и как его убить так, чтобы выполнялся его завершение работы?

Причина, по которой я хочу это сделать, заключается в том, что я хочу реализовать что-то вроде запуска apache, остановки apache, посредством чего после вызова запуска apache или остановки apache серверный процесс запускается или останавливается в фоновом режиме, и я получаю команду или приглашение bash; это должно работать как на Linux, так и на Windows.

Ответы [ 3 ]

4 голосов
/ 13 февраля 2012

Возможно, но это будет зависеть от операционной системы. В JVM нет ничего, что автоматически давало бы вам доступ к уничтожению других виртуальных машин.

Вам нужно будет либо вызвать команду kill вашей операционной системы (или эквивалентную), либо написать собственный код.

Это можно сделать, и если вы собираетесь работать только на Unix-подобных системах, тогда лучшим вариантом будет написать сценарий оболочки, который делает то, что вы хотите, а затем выполнить его с ProcessBuilder и друзьями. .

2 голосов
/ 13 февраля 2012

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

С другой стороны, если вы не хотите этого делать, вам нужно найти способ получить процессы экземпляра jvm. Если вы просто хотите убить JVM, это будет легко, но для конкретного процесса. Вам нужна помощь, я думаю, вот так:

ссылка

Надеюсь, это работает для вас

0 голосов
/ 13 февраля 2012

Я думаю, что вы можете использовать JMX.

Вы можете запустить сервер JMX в своем Java-процессе и открыть некоторые API, такие как start и stop.

С JMX вам не нужнореализовать что-нибудь о сокете и разрешении.Вам просто нужно предоставить функцию, вызываемую удаленно с JMX.Вы также можете установить пользователя и пароль для доступа.

...