2015-06-22 2 views
0

В основном я автоматизирую приложение и предпосылкой моей автоматизации является то, что я использую несколько сторонних библиотек, которые запускают определенные процессы. В конце выполнения кода я хочу закрыть все такие процессы. Единственное, что я знаю, это то, что этот процесс выполняется на определенном порту всегда (например, 61120).В Java как программно убивать процесс на указанном порту в Windows

Как часть очистки, я хочу программным образом завершить процесс, выполняемый на порту 61120 на Java.

+1

и что вы пробовали ... показать код ... может быть проще, чтобы помочь ... – CoderNeji

+0

Вы также можете проверить идентификатор родительского процесса, имхо, что является более надежным чем некоторые сетевые порты. Во всяком случае, Java является неправильным языком для такого инструмента. – Robert

ответ

2

Вы можете использовать netstat -a -b для получения исполняемых файлов и номеров портов. После этого вы можете taskkill исполняемые файлы по имени. Но я никогда не буду использовать это на продуктивной машине, потому что это какой-то ... ахм ... опасный.

Лучше начать процесс с помощью java (Runtime.getRuntime().execute(...)) и завершить их, если они вам больше не понадобятся.

0

Благодаря этому вы можете получить желаемые процессы и номера портов NETSTAT -a -b

Тогда есть немного API обеспечения требуемой функциональности для работы с процессами:

https://java.net/projects/winp

Windows Process Library

0

try netstat -a -o -n Поиск нужного вам порта. Если вывод консоли больше, перенаправите его в некоторый файл, например: netstat -a -o -n> {drive}:/netlog.log порт поиска в этом файле журнала.

Taskkill/F/PID

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