Список портирует процесс, PID слушает на (предпочтительно использующий iproute2 инструменты)?

Я продолжаю думать, что функции лучше, чем evalпеременные uing

#!/bin/bash

version() { uname -a;}
wm() { head -n1 <(openbox --version);}
for f in $(compgen -A function)
do declare -f $f | sed '1,2d; $d'
   $f
done
69
22.07.2018, 06:49
6 ответов

Вы можете использовать ss из пакета iproute2 (который похож на netstat ):

ss -l -p -n | grep "pid=1234,"

или (для более старой версии iproute2):

ss -l -p -n | grep ",1234,"

Замените 1234 на PID программы.

59
27.01.2020, 19:31

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

lsof -Pan -p PID -i

должен предоставить вам информацию, которую вы ищете.


Выходные данные

lsof -Pan -p 27808 -i
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
httpd   27808 apache    5u  IPv6 112811294      0t0  TCP *:80 (LISTEN)
httpd   27808 apache    7u  IPv6 112811298      0t0  TCP *:8443 (LISTEN)
httpd   27808 apache    9u  IPv6 112811303      0t0  TCP *:443 (LISTEN)

Я получил эту команду от здесь , но не уверен в точной ссылке, поскольку все они записаны в записной книжке. Но вы тоже можете проверить оттуда.

59
27.01.2020, 19:31

Вы можете использовать netstat , чтобы определить pid каждого процесса прослушивания.

netstat - Печать сетевых подключений, таблиц маршрутизации, статистики интерфейсов, маскарадных подключений и группового членства

-a, --all Показывать как слушающие, так и не слушающие (для TCP это означает установленные соединения) сокеты. С параметром --interfaces показать интерфейсы, которые не отмечены

- numeric, -n Показывать числовые адреса вместо того, чтобы пытаться определить символические имена хоста, порта или пользователя.

-p, --program Показать PID и имя программы, которой принадлежит каждый сокет.

Вот пример:

# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1507/rpcbind
tcp        0      0 0.0.0.0:51188               0.0.0.0:*                   LISTEN      1651/rpc.statd
tcp        0      0 0.0.0.0:1013                0.0.0.0:*                   LISTEN      1680/ypbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1975/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1763/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2081/master
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      2119/mongod
tcp        0     48 172.16.33.73:22             172.16.127.110:51850        ESTABLISHED 25473/sshd
tcp        0      0 172.16.33.73:22             172.16.127.110:51214        ESTABLISHED 24699/sshd
tcp        0      0 :::111                      :::*                        LISTEN      1507/rpcbind
tcp        0      0 :::9200                     :::*                        LISTEN      1994/java
tcp        0      0 :::9300                     :::*                        LISTEN      1994/java
tcp        0      0 :::22                       :::*                        LISTEN      1975/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      1763/cupsd
tcp        0      0 ::1:25                      :::*                        LISTEN      2081/master
tcp        0      0 :::59162                    :::*                        LISTEN      1651/rpc.statd
13
27.01.2020, 19:31

@jofel's answer показывает подходящий инструмент, ss, вот замены для других сетевых инструментов в iproute2.

Утраченные команды и их эквиваленты в iproute2 выглядят следующим образом:

deprecated      replacement(s)
==========      ==============
- arp           ip n (ip neighbor)
- ifconfig      ip a (ip addr), ip link, ip -s (ip -stats)
- iptunnel      ip tunnel
- iwconfig      iw
- nameif        ip link, ifrename
- netstat       ss, ip route (for netstat-r), ip -s link (for netstat -i), 
                ip maddr (for netstat-g)

- route         ip r (ip route)

Основной список также находится здесь, в Википедии: http://en.wikipedia.org/wiki/Iproute2.

Ссылки

12
27.01.2020, 19:31

Другой метод для lsof , если вы не знаете PID, а знаете только имя программы:

lsof -Pa -p $(pgrep [programName]) -i
1
27.01.2020, 19:31

Вы пробовали, это тоже самое

netstat -plnt | grep 27071

success

2
27.01.2020, 19:31

Теги

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