In Linux, processi e porte hanno una relazione simbiotica. Uno non può esistere né funzionare senza l'altro. I processi tendono a condividere le porte e alcuni processi si basano su una porta specifica per raggiungere un obiettivo del sistema operativo.
Questa guida all'articolo fornisce una procedura dettagliata su come liberare una porta utilizzata da un processo per utilizzarla su un altro processo.
Come elencare un porto con il relativo processo associato
Se puoi elencare una porta target e un processo PID , puoi terminare il processo ad esso associato. Esistono diversi strumenti che puoi utilizzare per elencare le porte utilizzate attivamente in Linux.
Un consiglio o un approccio più flessibile è tramite il comando Network Statistics (netstat) o comando ss (più veloce di netstat ). È un'installazione predefinita nella maggior parte delle distribuzioni Linux, ma puoi installarla con il seguente comando se non è presente.
Installa Netstat e SS Command in Linux
$ sudo apt-get install net-tools iproute [On Debian/Ubuntu & Mint] $ sudo dnf install net-tools iproute [On CentOS/RHEL/Fedora and Rocky Linux/AlmaLinux] $ pacman -S netstat-nat iproute [On Arch Linux] $ emerge sys-apps/net-tools iproute [On Gentoo] $ sudo dnf install net-tools iproute [On Fedora] $ sudo zypper install net-tools iproute [On openSUSE]
Per elencare una porta e scoprire se è bloccata su un particolare processo o servizio, attenersi alla seguente regola di sintassi.
$ sudo netstat -ltnp | grep -w ':[targeted_port]' OR $ ss -ltnp | grep -w ':[targeted_port]'
Ad esempio, processi o servizi in ascolto sulla porta 80 possono essere elencati nel modo seguente.
$ sudo netstat -ltnp | grep -w ':80' OR $ ss -ltnp | grep -w ':80'

Sotto la stringa di comando "netstat -ltnp ”, l'opzione -p
punta a 1520 che è il PID del processo che desideri eliminare. Prendi nota.
Come creare un processo fittizio in Linux
Per non rovinare l'ecosistema del tuo sistema operativo Linux, creeremo alcuni processi fittizi e li useremo per dimostrare l'obiettivo di questo articolo. Useremo il "socat ” utility da riga di comando per creare i nostri processi demo.
Abbiamo tre processi in SCTP , TCP e UDP rispettivamente protocolli. Collegheremo questi nuovi processi a una porta casuale come 9999 .
Il comando seguente genererà un processo temporaneo con un PID (ID processo ) di 8695 .
$ socat sctp-listen:9999,bind=127.0.0.1 stdout &

Il comando seguente genererà un processo temporaneo con un PID (ID processo) di 9080 .
$ socat tcp-listen:9999,bind=127.0.0.1 stdout &

Il comando seguente genererà un processo temporaneo con un PID (ID processo) di 9270 .
$ socat udp-listen:9999,bind=127.0.0.1 stdout &

Come eliminare un processo con il suo PID (ID processo)
Usando il "kill -9"
comando, possiamo sbarazzarci di un processo che tiene in ostaggio un numero di porta che vogliamo utilizzare su un altro processo prioritario. In questo caso, abbiamo creato tre processi con PID 8695 , 9080 e 9270 .
Per terminare il processo con PID 8695 , ho eseguito il seguente comando:
$ kill -9 8695
Possiamo anche uccidere più di un processo alla volta. Per terminare i processi creati con PID 9080 e 9270 , usa un comando simile a questo:
$ kill -9 9080 9270
Sia che tu stia uccidendo un processo o più di un processo contemporaneamente, l'esecuzione del comando kill dovrebbe portare a un'istanza terminale vuota come illustrato sopra.
Per confermare che i processi non sono più attivi, proveremo a eseguire nuovamente il comando kill :
$ kill -9 8695

Un messaggio di errore indicherà che il processo non è più attivo. Inoltre, i due processi recentemente uccisi [2] 9080 e [3] 9270 vengono visualizzati come non più attivi.
Nota finale
Le regole per uccidere un processo in esecuzione sono semplici. Innanzitutto, identifica la porta che desideri utilizzare tramite il "netstat ” o “ss” comando e quindi prendere nota del PID allegato al processo. Infine, usa il "uccidi -9" comando insieme al PID identificato per sbarazzarsi di quel processo.