Как узнать имя процесса, которое открывает порт tcp?

У меня есть два Linux-сервера. Скажем, это C и S
C является клиентом S

На моей машине S я печатаю.

$ netstat -an | grep ESTABLISHED
tcp 0 0 192.168.1.220:3306 C: 57010 ESTABLISHED

Тогда я могу знать, что C сейчас подключается.
На машине C я также хотел бы узнать имя процесса, которое открывает порт 57010 и подключает S сервер. Как я могу это сделать? Конечно, у меня есть разрешение C

3 Solutions collect form web for “Как узнать имя процесса, которое открывает порт tcp?”

Один из способов – сказать lsof -i:57010 -sTCP:ESTABLISHED . Это просматривает таблицу дескрипторов открытых файлов ядра, которая ищет процессы с установленным TCP-соединением с использованием этого порта. (Сетевые сокеты – это дескрипторы файлов в системах типа * ix.) Вы должны использовать -sTCP:LISTEN на стороне сервера, чтобы вместо этого отфильтровать только гнездо слушателя.

Из-за того, как работает lsof , он может видеть только процессы, которыми владеет ваш пользователь, если вы не запустили его как root. Это также довольно неэффективно, так как типичная система * ix имеет много файлов, открытых в любой момент времени. Метод netstat указанный в другом ответе, быстрее и обычно имеет более низкие требования к доступу.

lsof метод lsof имеет одно большое преимущество: не все операторы типа * ix имеют флаг netstat для включения имени процесса в выходной файл, тогда как lsof был перенесен на каждую операционную систему * ix, которую вы, скорее всего, будете использовать . Например, netstat OS X – это, например. Он имеет опцию -p , но он делает что-то отличное от netstat -p в Linux.

Для необычного номера порта, такого как номер в вашем вопросе, вы обычно можете уйти, не добавляя lsof -s -s , потому что данный компьютер вряд ли будет иметь программы, которые подключаются к порту и прослушивают его. Может быть полезно добавить его с номерами портов, такими как HTTP 80, где, вероятно, у вас будет несколько программ, использующих этот порт за один раз.

Очень повезло, что флаг -s является необязательным во многих ситуациях, потому что это использование работает только с lsof версии 4.81 и новее. В более старых версиях -s означало что-то еще! Это винтажное изменение 2008 года, но оно все равно может укусить неожиданно. RHEL 5 поставляется с lsof 4.78, например.

Вы можете использовать netstat -anp | grep 57010 netstat -anp | grep 57010 на сервере C. Но это будет работать только в том случае, если между ними нет какого-либо межсетевого экрана, который отображает порт 57010 на другой.

Только ради полноты:

Использование ss из нового набора инструментов для сети Linux ( iproute2 ):

 ss -tp sport = :57010 dst 192.168.1.220 
  • Как я могу регистрировать исходящий трафик TCP, включая полный путь к URL-адресам?
  • Разрешить безмоментное немодифицируемое программное обеспечение для привязки к портам 80 и 443
  • Netid в ss-продукте запутывает
  • / dev / tcp не найден
  • Использование TCP_DEFER_ACCEPT в реальном мире?
  • tcp6 в выходном netstat
  • «Netstat -p» / «ss -p» не показывает процесс прослушивания порта
  • Создайте UDP для TCP-моста с помощью socat / netcat для управления командами управления для медиаплеера vlc
  • Port netcat запрашивает информацию для скрипта bash
  • Как хранить данные на диске непосредственно в модуле ядра?
  • Где пропало / dev / tcp?
  • Linux и Unix - лучшая ОС в мире.