it-swarm-id.com

Menentukan proses apa yang terikat pada port

Saya tahu bahwa menggunakan perintah:

lsof -i TCP 

(atau beberapa varian parameter dengan lsof) Saya dapat menentukan proses mana yang terikat pada port tertentu. Ini berguna katakan jika saya mencoba memulai sesuatu yang ingin mengikat ke 8080 dan ada yang sudah menggunakan port itu, tapi saya tidak tahu apa.

Apakah ada cara mudah untuk melakukan ini tanpa menggunakan lsof? Saya menghabiskan waktu bekerja di banyak sistem dan sering tidak diinstal.

92
user5721

netstat -lnp akan mencantumkan pid dan nama proses di sebelah setiap port mendengarkan. Ini akan bekerja di Linux, tetapi tidak semua yang lain (seperti AIX.) Tambahkan -t jika Anda ingin TCP saja).

# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:24800           0.0.0.0:*               LISTEN      27899/synergys
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3361/python
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2264/mysqld
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22964/Apache2
tcp        0      0 192.168.99.1:53         0.0.0.0:*               LISTEN      3389/named
tcp        0      0 192.168.88.1:53         0.0.0.0:*               LISTEN      3389/named

dll.

120
Cakemox

Pada AIX, netstat & rmsock dapat digunakan untuk menentukan proses pengikatan:

[[email protected]] netstat -Ana|grep LISTEN|grep 80
f100070000280bb0 tcp4       0      0  *.37               *.*        LISTEN
f1000700025de3b0 tcp        0      0  *.80               *.*        LISTEN
f1000700002803b0 tcp4       0      0  *.111              *.*        LISTEN
f1000700021b33b0 tcp4       0      0  127.0.0.1.32780    *.*        LISTEN

# Port 80 maps to f1000700025de3b0 above, so we type:
[[email protected]] rmsock f1000700025de3b0 tcpcb
The socket 0x25de008 is being held by process 499790 (Java).
12
frielp

Alat lain yang tersedia di Linux adalah ss. Dari ss halaman manual di Fedora:

NAME
       ss - another utility to investigate sockets
SYNOPSIS
       ss [options] [ FILTER ]
DESCRIPTION
       ss is used to dump socket statistics. It allows showing information 
       similar to netstat. It can display more TCP and state informations  
       than other tools.

Contoh output di bawah ini - kolom terakhir menunjukkan proses yang mengikat:

[[email protected]] ss -ap
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                    :::http                    :::*        users:(("httpd",20891,4),("httpd",20894,4),("httpd",20895,4),("httpd",20896,4)
LISTEN     0      128             127.0.0.1:munin                    *:*        users:(("munin-node",1278,5))
LISTEN     0      128                    :::ssh                     :::*        users:(("sshd",1175,4))
LISTEN     0      128                     *:ssh                      *:*        users:(("sshd",1175,3))
LISTEN     0      10              127.0.0.1:smtp                     *:*        users:(("sendmail",1199,4))
LISTEN     0      128             127.0.0.1:x11-ssh-offset                  *:*        users:(("sshd",25734,8))
LISTEN     0      128                   ::1:x11-ssh-offset                 :::*        users:(("sshd",25734,7))
8
frielp

Untuk Solaris, Anda dapat menggunakan pfiles lalu grep oleh sockname: atau port:.

Sampel (dari di sini ):

pfiles `ptree | awk '{print $1}'` | egrep '^[0-9]|port:'

Saya pernah dihadapkan pada upaya untuk menentukan proses apa yang ada di balik port tertentu (kali ini 8000). Saya mencoba berbagai lsof dan netstat, tetapi kemudian mengambil kesempatan dan mencoba memukul port melalui browser (mis. http: // hostname: 8000 / ). Lihatlah, layar splash menyambut saya, dan menjadi jelas apa prosesnya (sebagai catatan, itu Splunk ).

Satu lagi pemikiran: "ps -e -o pid, args" (YMMV) kadang-kadang dapat menampilkan nomor port dalam daftar argumen. Grep adalah temanmu!

2
rickumali