Saya mencari daftar semua port yang sedang didengarkan PID.
Bagaimana Anda merekomendasikan saya mendapatkan data semacam ini tentang suatu proses?
Saya mencari daftar semua port yang sedang didengarkan PID.
Bagaimana Anda merekomendasikan saya mendapatkan data semacam ini tentang suatu proses?
Jawaban:
Anda dapat menggunakan ss
dari 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.
-u
atau hanya -t
untuk udb atau tcp. : +1: Dan ini semua bisa ditumpuk seperti ini ss -tlnp
ss -tlnp | cat
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
Saya tidak mengetahui cara menggunakan iproute2
alat. 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.
Anda dapat menggunakan netstat
ini 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
netstat
telah ditinggalkan oleh alat iproute2 dan saya ingin menghindarinya.
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 .
Metode lain untuk lsof
jika Anda tidak tahu PID, tetapi hanya nama Program:
lsof -Pa -p $(pgrep [programName]) -i
lsof
4,89 di ubuntu 16.04
pgrep <program name>
lalu pilih PID yang Anda butuhkan untuk perintah di atas. mengganti $(pgrep [programName])
dengan PID #
ss
tidak memiliki pemfilteran pada PID kecuali untuk soket netlink.