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

bindkey '^P' history-beginning-search-backward

Вы могли бы предпочесть up-line-or-history-beginning-search.

6
26.07.2012, 10:12
3 ответа

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

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

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

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

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

10
27.01.2020, 20:20

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

8
27.01.2020, 20:20
  • 1
    , о, спасибо. легкий. Существует ли способ видеть параметры командной строки процесса? –  Benjamin 26.07.2012, 11:45
  • 2
    @Benjamin, Если у Вас есть идентификатор процесса nnn затем ps waux | grep nnn даст Вам довольно мало информации. Для получения дополнительной информации все же использовать cat /proc/nnn/cmdline хотя пробелы были удалены (на самом деле, я думаю, что они заменяются \0), таким образом, не легко читать. –  Huygens 26.07.2012, 12:00

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

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

ss -tp sport = :57010 dst 192.168.1.220
5
27.01.2020, 20:20

Теги

Похожие вопросы