Daftar port yang didengarkan PID (lebih disukai menggunakan alat iproute2)?

68

Saya mencari daftar semua port yang sedang didengarkan PID.

Bagaimana Anda merekomendasikan saya mendapatkan data semacam ini tentang suatu proses?

ThorSummoner
sumber
Cukup aneh sstidak memiliki pemfilteran pada PID kecuali untuk soket netlink.
poige

Jawaban:

56

Anda dapat menggunakan ssdari paket iproute2 (yang mirip dengan netstat):

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

atau (untuk versi iproute2 lama):

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

Ganti 1234 dengan PID program.

Jofel
sumber
3
Ada juga -uatau hanya -tuntuk udb atau tcp. : +1: Dan ini semua bisa ditumpuk seperti ini ss -tlnpss -tlnp | cat
:,
1
Saya sudah terbiasa ss -nlp | cat, kira-kira, tunjukkan proses mendengarkan (-l), nomor port mereka (-n), dan info proses mereka (-p), dan jangan mencoba menyesuaikan output ke shell saya | cat( atau kurang atau apa pun). Hanya butuh dua tahun bagi saya untuk terbiasa dengan hal itu: D
ThorSummoner
Tidak bekerja untuk saya (pada Debian 9). Di sana Anda harus
memahami
@ofrommel terima kasih atas petunjuknya - Saya mengadaptasi jawabannya.
jofel
Juga, ini hanya bekerja dengan izin root :)
ofrommel
57

Saya tidak mengetahui cara menggunakan iproute2alat. Tetapi sebagai solusi, Anda bisa mencoba yang ini.

lsof -Pan -p PID -i

harus memberi Anda informasi yang Anda cari.


Keluaran

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)

Saya mendapat perintah ini dari sini tetapi tidak yakin dengan tautan yang tepat karena saya sudah mencatat semuanya di buku catatan. Tapi Anda bisa check out dari sana juga.

Ramesh
sumber
13

Anda dapat menggunakan netstatini untuk mengetahui pid dari setiap proses mendengarkan.

netstat - Mencetak koneksi jaringan, tabel perutean, statistik antarmuka, koneksi menyamar, dan keanggotaan multicast

-a, --all Tampilkan soket mendengarkan dan non-mendengarkan (untuk TCP ini berarti koneksi yang dibuat). Dengan opsi --interfaces, tampilkan antarmuka yang tidak ditandai

--numeric, -n Tampilkan alamat numerik alih-alih mencoba menentukan host simbolik, port atau nama pengguna.

-p, --program Tunjukkan PID dan nama program yang dimiliki oleh setiap soket.

Berikut ini sebuah contoh:

# 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
Raza
sumber
1
Terima kasih, meskipun saya telah diberitahu bahwa netstattelah ditinggalkan oleh alat iproute2 dan saya ingin menghindarinya.
ThorSummoner
12

Jawaban @ jofel menunjukkan kepada Anda alat yang tepat untuk digunakan ss,, inilah penggantian untuk alat jaringan lain di iproute2.

Perintah-perintah yang sudah tidak digunakan lagi dan iproute2-nya yang setara adalah sebagai berikut:

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)

Daftar dasarnya juga ada di sini di Wikipedia: http://en.wikipedia.org/wiki/Iproute2 .

Referensi

slm
sumber
1

Metode lain untuk lsofjika Anda tidak tahu PID, tetapi hanya nama Program:

lsof -Pa -p $(pgrep [programName]) -i
cryptoboy
sumber
tidak bekerja dengan lsof4,89 di ubuntu 16.04
palik
1
Itu akan menjadi kasus jika program telah menelurkan banyak proses. Yang dalam hal ini Anda perlu menentukan PID spesifik ketika menjalankan perintah lsof yang saya berikan. pgrep <program name>lalu pilih PID yang Anda butuhkan untuk perintah di atas. mengganti $(pgrep [programName])dengan PID #
cryptoboy
0

Sudahkah Anda mencoba, ini juga tidak sama

netstat -plnt | grep 27071

keberhasilan

Pengusir setan
sumber