Как найти программу, отвечающую за конкретный сокет 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, но не знаю, где. Как я могу точно найти файл конфигурации этого порта, чтобы изменить его?

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

4 ответа

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

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

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

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

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

Другие вопросы по тегам