Come usare fuser e netstat su Linux/Ubuntu

Iniziamo ad usare la shell di comandi Linux/Ubuntu per gestire le installazioni di Domotica pi√Ļ evolute. Useremo Ubuntu per applicazioni complesse che non potrebbero mai girare su una semplice scheda Arduino.

In questo post impareremo a usare fuser nel terminale di Linux.

Come scoprire i programmi che bloccano una certa porta su Linux?

Ammesso che non siate gi√† appassionati di Ubuntu o Fedora o altre ‚Äúdistro‚ÄĚ Linux voglio iniziare con una serie di brevi articoli per risolvere alcuni piccoli ma noiosi problemi che rallentano il lavoro di programmazione. Tra i tanti, secondo me il pi√Ļ comune √®¬†Port already used¬†¬†(Porta gi√† occupata) che appare quande lanciate un server¬†Python/Django¬†o¬†NodeJs.

Detto in modo facile, avete lanciato e dimenticato un programma che sta bloccando proprio la porta che vi serve. Ad esempio la porta 3000 di Nodejs o la 8000 di Python/Django.

Potremmo lanciare il comando ps -ea per andare a spulciare tra tutti i programmi in esecuzione ma perderemmo troppo tempo. Scriviamo invece sul PROMPT di Linux (che si chiama SHELL) il comando seguente e otterremo in un instante il PID del programma:

fuser -i  :3000

oppure

fuser -i  :8000

facendo attenzione a lasciare uno spazio prima dei¬†‚Äúdue punti‚ÄĚ.¬†Riceveremo un messaggio del tipo:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 16176 
utente 22u IPv4 26591333 0t0 TCP :3000 (LISTEN)

e da questo siamo in grado di capire che un server node sta girando in sottofondo (come demon) con un PID = 16176.
Per bloccarlo ci basta scrivere:

kill -9 16176 (o qualunque numero sia il PID)

facendo come sempre attenzione agli spazi. In alternativa puoi usare invece netstat insieme a grep per cercare il programma che occupa la porte 80 o 3000 o 8000.

sudo netstat -ltnp | grep 80
sudo netstat -ltnp | grep 3000
sudo netstat -ltnp | grep 8000

Dopo avere ottenuto il messaggio:

tcp-0-0-0-0-0-0-3000-0-0-0-0-listen-16176-node
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 16176/node

possiamo procedere con il solito comando kill -9¬†PID¬†per ‚Äústoppare‚ÄĚ il programma che ci d√† fastidio.