Liste, bir PID'in dinlediği bir işlemi (tercihen iproute2 araçlarını kullanarak) listeler.


68

Bir PID'in dinlemekte olduğu tüm bağlantı noktalarını listelemek istiyorum.

Bir süreçle ilgili bu tür verileri almamı nasıl tavsiye edersiniz?


Yeterince garip ssnetlink soketleri dışında PID üzerinde filtreleme yok.
poige

Yanıtlar:


56

Sen kullanabilirsiniz ss(benzer iproute2 paketinden netstat):

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

veya (daha eski iproute2 sürümü için):

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

1234'ü programın PID'si ile değiştirin.


3
Orada da -uya -tsadece UDB veya tcp için. : + 1: ve bunlar şöyle istiflenebilir: ss -tlnp, ve genişlik çıkışı, dolgu ortadan kaldırmak için rahatsız edici bulmak olabildiğince boru kedi ya da daha az ya da w / e se:ss -tlnp | cat
ThorSummoner

1
Ben alışkanlık haline kazanılmış ettik ss -nlp | catonların bağlantı noktası numaraları (-n) ve bunların süreç bilgisi (-p), ve benim kabuk çıktı sığdırmak kalkmayın, kabaca, bana süreçleri (-l) dinleme gösterecek, | cat( veya daha az veya her neyse). Buna
alışmam

Benim için işe yaramadı (Debian 9'da). Orada, ", pid = 1234" için grep
yapmalısınız

@ iprommel için teşekkürler - cevabı ben uyarladım.
jofel

Ayrıca, bu sadece root izinleri ile çalışır :)
ofrommel

56

iproute2Araçları kullanmanın bir yolunun farkında değilim . Ancak bir geçici çözüm olarak, bunu deneyebilirsiniz.

lsof -Pan -p PID -i

aradığın bilgiyi sana vermeli.


Çıktı

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)

Buradan bu emri aldım ancak tam nottan emin değilim çünkü hepsini not defterinde not aldım. Ama oradan da kontrol edebilirsin.


13

Bunun netstatiçin her bir dinleme işleminin pidini bulmak için kullanabilirsiniz .

netstat - Ağ bağlantılarını, yönlendirme tablolarını, arayüz istatistiklerini, maskeli bağlantı bağlantılarını ve çok noktaya yayın üyeliklerini yazdırın

-a, --all Hem dinleyen hem de dinleyen olmayanları göster (TCP için bu yerleşik bağlantılar demektir) soketleri. --İnterfaces seçeneğiyle, işaretlenmemiş arayüzleri gösterin

- sayısal, -n Sembolik ana bilgisayar, bağlantı noktası veya kullanıcı adlarını belirlemeye çalışmak yerine sayısal adresleri gösterir.

-p, --program Her soketin ait olduğu programın PID'sini ve adını gösterin.

İşte bir örnek:

# 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

1
netstatIproute2 araçları tarafından kullanımdan kaldırıldığını öğrendiğim halde teşekkür ederim .
ThorSummoner 27:14

12

@ jofel'in cevabı size kullanılacak uygun aracı gösterir ss, işte iproute2'deki diğer ağ araçlarının yerine geçenler.

Kullanımdan kaldırılan komutlar ve bunların iproute2 eşdeğerleri aşağıdaki gibidir:

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)

Temel liste ayrıca Wikipedia'da: http://en.wikipedia.org/wiki/Iproute2 .

Referanslar


1

lsofPID'yi bilmiyorsanız, ancak yalnızca Programın adını kullanmanız için başka bir yöntem :

lsof -Pa -p $(pgrep [programName]) -i

lsof
ubuntu'da

1
Program birden fazla süreç oluşturduysa durum böyle olacaktır. Bu durumda, verdiğim Lsof komutunu çalıştırırken belirli bir PID belirtmeniz gerekecektir. pgrep <program name>daha sonra yukarıdaki komut için ihtiyacınız olan PID'yi seçin. $(pgrep [programName])PID # ile değiştirme
cryptoboy

0

Denedin mi, bu da aynı

netstat -plnt | grep 27071

başarı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.