Как найти программу, отвечающую за конкретный сокет 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, просто остановите приложение.