Puoi usare netstat per questo. Guarda l'esempio (ho cercato ssh ):
netstat -putan | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1725/sshd
tcp 0 0 1.2.3.4:45734 1.2.3.5:22 ESTABLISHED 2491/ssh
tcp6 0 0 :::22 :::* LISTEN 1725/sshd
Spiegazione:
Uso spesso i parametri -putan (perché sono semplici da ricordare).
-p:mostra i PID dell'applicazione/processo-u:mostra porte/connessioni udp-t:mostra porte/connessioni tcp-a:mostra sia i socket in ascolto che quelli non in ascolto-n:output numerico (non eseguire ricerche DNS per nomi host ecc.)
Nell'output sopra, vedi che c'è un processo daemon ssh (sshd ) con PID 1725 in ascolto sulla porta 22 su tutte le interfacce di rete (0.0.0.0 ). Inoltre esiste un processo client ssh (PID 2491 ) collegato all'indirizzo IP 1.2.3.5 al numero di porta 22 , il mio indirizzo IP è 1.2.3.4 e la mia porta esterna è 45734 . Vedi che la connessione è stata stabilita. Pertanto ho effettuato l'accesso tramite ssh .
Un altro strumento che può farlo è lsof :
# lsof -i -a -p 1981
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:22 (LISTEN)
#
Le opzioni utilizzate sono le seguenti:
-iper stampare le porte Internet aperte da un processo-aper fare in modo che tutte le opzioni siano AND-p 1981per mostrare l'output per il processo 1981-nper inibire la ricerca del nome host e mostrare invece l'IP-Pper inibire la ricerca del servizio e mostrare invece il numero di porta
lsof ha il vantaggio che puoi specificare il processo da controllare piuttosto che doverlo estrarre da un output più grande. netstat è disponibile in modo più affidabile sui sistemi, sebbene lsof sta diventando più standard di prima.
ss utility dal pacchetto iproute per Linux