it-swarm.it

Determinare quale processo è associato a una porta

So che usando il comando:

lsof -i TCP 

(o qualche variante di parametri con lsof) Posso determinare quale processo è associato a una determinata porta. Questo è utile dire se sto cercando di avviare qualcosa che vuole legare a 8080 e qualcun altro sta già usando quella porta, ma non so cosa.

C'è un modo semplice per farlo senza usare lsof? Passo il tempo a lavorare su molti sistemi e spesso lsof non è installato.

92
user5721

netstat -lnp elencherà il pid e il nome del processo accanto a ciascuna porta di ascolto. Funzionerà sotto Linux, ma non tutti gli altri (come AIX.) Aggiungi -t se vuoi TCP.

# 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

eccetera.

120
Cakemox

Su AIX, netstat & rmsock possono essere utilizzati per determinare l'associazione al processo:

[[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

Un altro strumento disponibile su Linux è ss. Dalla pagina man ss su 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.

Esempio di output di seguito: la colonna finale mostra l'associazione di processo:

[[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

Per Solaris è possibile utilizzare pfiles e quindi grep di sockname: o port:.

Un campione (da qui ):

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

Una volta mi sono trovato di fronte al tentativo di determinare quale processo si nascondesse dietro una determinata porta (questa volta erano 8000). Ho provato una varietà di lsof e netstat, ma poi ho colto l'occasione e ho provato a colpire la porta tramite un browser (cioè http: // nomehost: 8000 / ). Ecco, una schermata iniziale mi ha salutato, ed è diventato evidente quale fosse il processo (per la cronaca, era Splunk ).

Un altro pensiero: "ps -e -o pid, args" (YMMV) a volte può mostrare il numero di porta nell'elenco degli argomenti. Grep è tuo amico!

2
rickumali