Я хочу перелічити всі порти, які PID зараз слухає.
Як би ви рекомендували мені отримати такі дані про процес?
Я хочу перелічити всі порти, які PID зараз слухає.
Як би ви рекомендували мені отримати такі дані про процес?
Відповіді:
Ви можете використовувати ss
з пакета iproute2 (який схожий на netstat
):
ss -l -p -n | grep "pid=1234,"
або (для старшої версії iproute2):
ss -l -p -n | grep ",1234,"
Замініть 1234 PID програми.
-u
або лише -t
для udb або tcp. : +1: І всі вони можуть бути складені так:, ss -tlnp
І для усунення виходу ширини заповнення, який мені здається дратуючим, ви можете труби, хоча кіт або менше або ш / е:ss -tlnp | cat
ss -nlp | cat
, це приблизно, покажіть мені процеси прослуховування (-l), їхні порти (-n) та інформацію про їх процес (-p), і не намагайтеся прилаштувати вихід до моєї оболонки | cat
( або менше, або що завгодно). Мені знадобилося лише два роки, щоб звикнути до цього: D
Мені не відомий спосіб використання 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)
Я отримав цю команду звідси, але не впевнений у точному посиланні, оскільки я їх усіх записав у зошиті. Але ви також можете звідти перевіритись.
Ви можете використати netstat
для цього, щоб визначити прискіпливість кожного процесу прослуховування.
netstat - друкуйте мережеві з'єднання, таблиці маршрутів, статистику інтерфейсів, маскарадні з'єднання та членство в багатоадресному режимі
-a, - всі показують розетки як для прослуховування, так і для прослуховування (для TCP це означає встановлені з'єднання). За допомогою параметра --interfaces показуйте інтерфейси, які не позначені
- числовий, -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
netstat
застаріли інструменти iproute2, і я прагну цього уникнути.
@ jofel відповідь показує вам відповідний інструмент для використання 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 .
Ще один метод, lsof
якщо ви не знаєте PID, а лише назву Програми:
lsof -Pa -p $(pgrep [programName]) -i
lsof
4.89 на ubuntu 16.04
pgrep <program name>
потім виберіть потрібний PID для вищевказаної команди. заміна $(pgrep [programName])
на PID #
ss
що немає фільтрації за PID, за винятком сокет-мереж.