выяснить, какие порты прослушивает программа / процесс - lsof, netstat

1

В Ubuntu у меня есть интерактивная программа, которую я подозреваю, что она висит на определенном порту, не знаю, какой из них.

Это сценарий оболочки, который вызывает команду java в последней строке.

Как я могу легко узнать порты, которые он прослушивает в состоянии, когда он "висит"?

Я попытался поставить lsof перед командой, но выписан огромный путь, и он говорит "lsof: путь слишком длинный",

lsof -c java  ${JAVA_OPTS} -classpath "${SERVLET_API}:${JSP_API}:${OPENCMS_CLASSPATH}:${TOMCAT_CLASSPATH}:${OPENCMS_BASE}/classes" org.opencms.main.CmsShell -base="${OPENCMS_BASE}" "$@"
  • 1
    Вы можете попробовать использовать netstat вместо lsof, чтобы увидеть, какие порты прослушивают соединения.
  • 1
    Попробуйте найти название программы, которую вы подозреваете, например, lsof -i -P | grep <your_prog_name>
Показать ещё 2 комментария
Теги:
netstat
lsof

1 ответ

1

Разделите это на несколько команд. Сначала запустите приложение с помощью java... Затем вы можете использовать jps чтобы увидеть идентификатор процесса нового Java-процесса (jps должен находиться в той же папке, что и java).

Теперь вы можете использовать lsof -np <id> чтобы получить список дескрипторов файлов.

Но программы Java также могут зависать в цикле. Чтобы узнать, что делает программа в данный момент, используйте jstack или jconsole.

  • 0
    jstackPID не дал никакого вывода. jstack -F PID дал трассировку стека, сказав .NoSuchSymbolException: не удалось найти символ "gHotSpotVMTypes"
  • 0
    jconsole не удалось подключиться к процессу
Показать ещё 2 комментария

Ещё вопросы

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