Назад | Перейти на главную страницу

Как найти программу, отвечающую за конкретный TCP-сокет (linux)

joe@server:~$ sudo lsof -i :36168
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    23059 activemq   15u  IPv6 109382      0t0  TCP *:36168 (LISTEN)

Из вывода выше я хочу отключить порт 36168, но не знаю где. Как мне найти файл конфигурации этого порта, чтобы изменить его?

grep Это не дает результата. И я не хочу вместо этого использовать брандмауэр.

netstat -putan | grep 80 | grep LISTEN

дает

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1682/apache2 

Как видите, apache2 с PID = 1682 - это процесс, прослушивающий порт 80 в этом примере.

Я всегда считал термоэлемент проще

fuser 80/tcp

Он перечислит все pid, работающие на порту 80, используя tcp

От твоего lsof выход, у вас есть PID номер процесса, у которого открыт порт. Делать ps -AH чтобы увидеть иерархический список процессов и найти конкретный PID. Этот процесс будет с отступом «под» другими процессами, просканируйте дерево вверх, пока не найдете родительский процесс (если вы дойдете до init вы зашли слишком далеко, вернитесь на один уровень ниже).

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

Хорошо известные порты находятся в / etc / services. Упомянутый порт, похоже, используется activemq, возможно, он не стандартизирован. См. Конфигурацию activemq или развернутые веб-приложения, если они работают в веб-контейнере. Вы можете защитить установку, если сделаете привязку к локальному адресу (127.0.0.1 или :: 1). Если вам не нужен activemq, просто остановите приложение.