Получить имя процесса для данного порта в Java в Ubuntu-Linux?

1

Я хочу получить имя процесса для данного ИМЯ ПОРТА в Java, Ubuntu. Я нашел образцы, как это сделать в окнах (список задач в RunTime). Но мне нужно знать это в Linux.

  • 1
    Вы имели в виду идентификатор процесса?
  • 0
    не идентификатор процесса. Я хочу знать имя процесса для данного порта.
Показать ещё 3 комментария
Теги:

2 ответа

4
Лучший ответ

Если вы хотите перечислить приложение, которое прослушивает определенный порт, вы можете использовать команду unix lsof в сочетании с awk:

lsof -i :80 | awk '{print $1}'

В этом списке вы укажете имя команды из процесса, который прослушивает порт 80.

В вашем джавакоде вы пишете следующее:

int port = 80;
Process p = Runtime.getRuntime().exec("lsof -i :" + port + " | awk '{print $1}'");

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = reader.readLine()) != null) {
    System.out.println(s);
}

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

Process p = Runtime.getRuntime().exec("ps -ef | awk '{if($2==\"" + pid + "\") print $8}'");
  • 0
    Ваш первоначальный ответ был интересным, и до сих пор не ясно, чего хочет опера, поэтому я добавил код для PID в качестве дополнительного примечания - надеюсь, вы не возражаете.
  • 0
    @chresse. Я высоко ценю вашу поддержку. Это именно то, что я искал. и еще раз, я вам очень благодарен.
Показать ещё 3 комментария
2

Файловая система /proc помогает. /proc/$PID/exe является символической ссылкой на исполняемый файл, соответствующий идентификатору процесса. Очевидно, вы можете просто прочитать этот файл с Java.

Изменение: раньше вы просили "идентификатор процесса", теперь речь идет о TCP/IP-порту..., который делает мой ответ бесполезным.

  • 0
    Благодарю. Но не могли бы вы сообщить мне пример кода, пожалуйста, на Java?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню