Il controllo dei processi su una Linux box è uno dei compiti più importanti che può svolgere un sysadmin ma anche un utente comune. Ecco allora che la conoscenza degli strumenti fuser e lsof può rivelarsi fondamentale per tenere sotto controllo e diagnosticare con precisione cosa sta accadendo sulla propria distribuzione.
Di seguito voglio presentare una guida sintetica a dei possibili utilizzi di fuser e lsof:
fuser
Alcuni degli esempi riportati di seguito sono tratti da CommandLineFu.
fuser /home/pippo/
elenca tutti i PID dei processi che accedono alla cartella /home/pippo
fuser -v /home/pippo/
elenca tutti i nomi dei processi che accedono alla home directory di pippo
fuser -u /home/pippo/
elenca il nome dell’utente che ha processi attivi che accedono alla home di pippo
fuser -km /home/pippo/
uccide tutti i processi che accedono a /home/pippo/, può essere usato anche per blockdevice (/dev/sda1)
oppure
fuser -k nomefile
uccide i processi che bloccano un file
fuser -v 22/tcp
visualizza l’utente e il processo che gira su porta 22
oppure
fuser -n tcp 22
lsof
Alcuni esempi sono tratti dall’ottimo articolo di Daniel Miessler e da Troubleshooting UNIX Systems with Lsof
lsof -c sshd
l’opzione -c mostra quali file sono aperti dal processo indicato, nel mio caso sshd.
lsof /dev/cdrom
oppure
lsof /var/log/messages
mostra quali processi stanno interagendo su un block device o su un file, in questo caso /var/log/messages
lsof –u demonfly | more
mostra quali file sono aperti dall’utente demonfly e li manda in pipe a more per consentire di vedere tutto l’output nel caso sia molto lungo.
lsof -i
mostra tutte le connessioni aperte
lsof -i TCP
mostra tutte le connessioni su protocollo TCP
lsof -i UDP
mostra tutte le connessioni su protocollo UDP
lsof -u demonfly -a -i
mostra tutti i file processi che accedono a Internet dell’utente demonfly.
lsof -i TCP:80
mostra quale processo occupa la porta 80.
lsof -p 14554
mostra quali file sono aperti da un PID specifico.