Introduzione
Il comando fuser
è un’utilità di Linux progettata per trovare quale processo sta utilizzando un determinato file, directory o socket. Fornisce anche informazioni sull’utente che sta eseguendo quel processo e sul tipo di accesso.
Come Utilizzare l’Utility fuser
Puoi consultare la pagina del manuale di fuser
per avere una panoramica di tutte le opzioni da utilizzare con fuser
. Puoi anche eseguire fuser
da solo, senza alcuna opzione, per avere una panoramica della sintassi di fuser
:
- fuser
OutputNo process specification given
Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
Come Visualizzare i Processi in Esecuzione in una Directory
fuser
può anche essere utilizzato con l’opzione -v, che esegue lo strumento in modalità dettagliata. L’opzione dettagliata è utilizzata per produrre più output in modo che l’utente possa osservare cosa sta facendo fuser
. Esegui fuser
sulla directory corrente, .
, includendo l’opzione -v
:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
In questo caso, l’unico processo in esecuzione in questa directory è la shell interattiva bash
dalla quale stai eseguendo i comandi in questo momento.
Quando viene eseguito in modalità dettagliata, l’utilità fuser
fornisce informazioni sull’UTENTE
, PID
, ACCESSO
e COMANDO
di un processo. Il carattere c
sotto ACCESSO
indica il tipo di accesso, in questo caso significando la corrente directory. Ci sono altri tipi di accesso, come esecuzione di un eseguibile, root directory, file aperto e mapped file o libreria condivisa.
Come Trovare Processi Che Utilizzano Sockets di Rete
Potresti anche avere bisogno di cercare processi che utilizzano sockets TCP e UDP. Per dimostrare questo esempio, prima userai nc
per creare un ascoltatore TCP sulla porta 8002, in modo che ci sia un processo in esecuzione che puoi osservare:
- nc -l -p 8002
Questo bloccherà il terminale finché è in esecuzione. In un’altra finestra del terminale, usa fuser
per trovare il processo in esecuzione sulla porta TCP 8002 con l’opzione -n
:
- fuser -v -n tcp 8002
Output USER PID ACCESS COMMAND
8002/tcp: sammy 17985 F.... nc
Nota: Per impostazione predefinita, lo strumento fuser
controllerà sia i socket IPv4 che IPv6, ma puoi cambiarlo con le opzioni -4
e -6
per controllare solo le connessioni IPv4 o solo IPv6, rispettivamente.
Questa uscita mostra che l’ID del processo (PID
) del processo che utilizza netcat è 17985
e il comando utilizzato per avviarlo è ‘nc’. L’ID del processo (PID) può essere utilizzato in molti modi, incluso per fermare o terminare un processo in esecuzione. Puoi saperne di più sulla gestione dei processi leggendo Come Usare ps, kill e nice per Gestire i Processi in Linux. Puoi anche utilizzare fuser
stesso per terminare i processi in esecuzione su porte specifiche utilizzando il flag -k
:
- fuser -k 8002/tcp
Output8002/tcp: 18056
Se torni alla tua prima finestra terminale, noterai che il programma nc
è stato terminato e è tornato alla shell.
La utility fuser può anche essere utilizzata per inviare segnali specifici a un processo. Quando utilizzato con l’opzione -k, il comando fuser invia il segnale KILL a un processo. Ci sono molti altri segnali che possono essere inviati a un processo in esecuzione specifico. Puoi elencarli con fuser -l
:
- fuser -l
OutputHUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
Conclusione
In questo articolo hai appreso alcuni esempi di utilizzo di fuser
per monitorare le porte e le directory in uso su un sistema Linux. fuser
può essere particolarmente utile quando stai cercando di capire quali processi sconosciuti possono essere in esecuzione sul tuo sistema.
Successivo, potresti voler imparare come utilizzare netstat
e du
per monitorare altre risorse del server.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command