Introduzione
Il fuser
comando (Trova UTENTE ) è uno strumento di gestione dei processi che identifica i processi utilizzando un file, una directory o un socket. Inoltre, fuser
fornisce informazioni sul titolare del processo e sul tipo di accesso e termina i processi in questione.
Questo articolo spiegherà come utilizzare il fuser
Comando Linux con esempi.
Prerequisiti
- Un sistema che esegue Linux.
- Accesso al terminale.
- Privilegi di sudo.
Sintassi del fusore Linux
Il fuser
comando ha alcuni possibili tipi di sintassi:
- Solo opzioni . Esegui un'azione non specifica per una directory, un file o un socket di destinazione.
fuser [option]
- Specifica directory, file o socket . Individua tutti i processi in esecuzione nel percorso di destinazione ed elenca i relativi PID.
fuser [file_or_directory_or_socket]
- Specifica opzioni e directory, file o socket . Modificare la ricerca ed eseguire un'azione specifica su un processo. Ad esempio, terminalo.
fuser [options] [file_or_directory_or_socket]
- Nessuna opzione . Mostra "Nessuna specifica di processo fornita" messaggio e la schermata della guida.
Opzioni del fusore Linux
Il fuser
Il comando funziona anche quando specifichi solo un file, una directory o un socket. Tuttavia, l'utilizzo delle opzioni fornisce risultati più dettagliati.
La tabella seguente mostra i fuser
più comuni opzioni:
Comando | Descrizione |
---|---|
-v , --verbose | Mostra i campi USER, PID, ACCESS e COMMAND invece di elencare solo i PID. |
-n , --namespace | Cambia lo spazio dei nomi dal valore predefinito a quello nuovo. |
-m , --mount | Specifica un file che appartiene a un file ed elenca ogni processo che accede ai file in quel filesystem. |
-k , --kill | Uccide i processi. |
-i , --interactive | Chiede conferma all'utente prima di terminare un processo. |
-[SIGNAL] | Uccide i processi con il segnale specificato invece di quello predefinito (SIGKILL). |
-l , --list-signals | Elenca tutti i nomi dei segnali che possono essere utilizzati da fuser . |
-a , --all | Mostra i file specificati sul comando a cui si accede da almeno un processo. |
-u , --user | Aggiunge il nome utente del proprietario del processo a ciascun PID. |
-4 , --ipv4 | Cerca solo i socket IPv4. |
-6 , --ipv6 | Cerca solo i socket IPv6. |
-M , --ismountpoint | Uccide i processi solo se NAME specifica un punto di montaggio. |
-w | Chiudi solo i processi con accesso in scrittura. |
-s , --silent | Rappresenta un'operazione silenziosa che ignora -u e -v opzioni. |
- | Ripristina tutte le opzioni. |
Esempi di comandi del fusore Linux
Il fuser
è lo strumento Linux definitivo per la gestione dei processi. Per ottenere il massimo dallo strumento, fai riferimento alle sezioni seguenti per visualizzare fuser
comuni esempi.
Individuare i processi in una directory
Il fuser
di base il ruolo è identificare quali processi stanno utilizzando i file in una directory particolare. La sintassi è:
fuser [directory]
Ad esempio, per elencare i processi in esecuzione nella directory corrente, utilizza il punto (.
) :
fuser .
L'output elenca i PID di tutti i processi che accedono alla directory corrente.
Il terminale mostra la Casa cartella come quella corrente. Pertanto, utilizzando quel percorso di cartella viene stampato lo stesso output:
fuser /home/sara
Per stampare un output più leggibile, utilizza il -v
opzione (dettagliata) prima della directory:
fuser -v .
Lo stesso comando funziona su qualsiasi altra directory. Ad esempio, identifica i processi in WhatIsThis directory collocata nella Home cartella con:
sudo fuser -v /home/sara/WhatIsThis
Nota: Utilizzando sudo
stampa più processi, inclusi quelli di proprietà di root.
Il fuser -v .
l'output è dettagliato e include le seguenti colonne:
- UTENTE - Il titolare del processo.
- PID - L'ID del processo.
- ACCESSO - Il tipo di accesso.
- COMANDO - Il comando che esegue il processo.
Negli esempi precedenti, la colonna di accesso mostra il simbolo c , che presenta la directory corrente. Altri tipi e simboli di accesso sono:
- e - Eseguibile in esecuzione.
- f - Apri file.
- F - File aperto per la scrittura.
- r - Directory principale.
- mi - File mappato o libreria condivisa.
Elenca i processi utilizzando un file
Trova i processi che accedono a un file eseguendo fuser
con un percorso al nome del file.
fuser -v [filename]
Ad esempio, guarda i processi che utilizzano this_is_a_new_text file nella Home directory con:
sudo fuser -v /home/sara/this_is_a_new_text
L'output mostra:
- Root come proprietario del processo.
- PID del processo.
- Il tipo di accesso f che rappresenta un file aperto.
- Il comando
less
accedendo al file.
Il fuser
il comando funziona anche su un eseguibile, come PYTHON3 nella directory bin:
sudo fuser -v /bin/python3
Il comando restituisce:
- Root come proprietario del processo.
- PID del processo.
- Il simbolo di accesso e , indicando che il file è un eseguibile.
- Il comando
networkd-dispat
eseguire il file.
Individuare i processi utilizzando un socket
Per trovare i processi che utilizzano socket TCP e UDP, utilizzare:
fuser -v -n [socket_type] [port]
Oppure:
fuser -v [port]/[socket_type]
Il -n
flag seleziona il tipo di socket corrispondente (TCP o UDP) come spazio dei nomi. Ad esempio, identifica il processo in esecuzione sulla porta TCP 631 con:
sudo fuser -v -n tcp 631
La sintassi più breve è:
sudo fuser -v 631/tcp
In entrambi i casi, il comando stampa il PID del processo, F come tipo di accesso e il cupsd
comando.
Trova processo che accede a un filesystem
Usa il -m
flag con fuser per identificare tutti i processi che accedono a un filesystem prendendo di mira un file appartenente a quel sistema.
Ad esempio, per elencare tutti i file e i processi in esecuzione nel filesystem in cui this_is_a_new_text il file appartiene, inserisci:
sudo fuser -v -m this_is_a_new_text
Processi di uccisione
Il comando del fusore con il -k
flag termina i processi in un percorso selezionato. Ad esempio, un processo sta eseguendo this_is_a_new_text file nella Home directory. Il file viene aperto con il comando less.
Usa fuser -k
per terminare solo il processo che accede a questo file, non tutti i processi che utilizzano la Home directory:
sudo fuser -v -k /home/sara/this_is_a_new_text
Il terminale non stampa nulla dopo nessuno dei due comandi. Inoltre, il targeting di un file con fuser
inoltre non stampa alcun risultato. Ciò significa che il processo è terminato:
sudo fuser -v /home/sara/this_is_a_new_text
Per confermarlo, controlla this_is_a_new_text file precedentemente aperto con less
:
L'output mostra il messaggio ucciso e una nuova riga terminale vuota, a conferma che il processo è terminato.
Uccidi i processi in modo interattivo
La bandiera -k
uccide qualsiasi processo utilizzando un file particolare. Tuttavia, se lo spazio dei nomi è una directory, fuser -k
uccide tutti i processi che accedono a quella directory. Eseguendo questo comando nella Home directory senza specificare il file, interrompe il processo che esegue il sistema operativo e spegne il sistema .
Per evitare errori, esegui fuser
in modalità interattiva con il -ki
opzione. Termina i processi in modo interattivo nella Home directory con:
fuser -ki .
Il comando chiede conferma ogni volta prima di terminare un processo. Pertanto, premi y per terminare il processo e passare a quello successivo, oppure scegli N per passare al processo successivo.
Invia un segnale
Durante l'esecuzione di fuser
con -k
, il SIGKILL il segnale viene inviato a un processo. Tuttavia, per interrompere il normale fuser -k
eseguire e terminare i processi con un segnale diverso, include il -[SIGNAL]
bandiera.
fuser -k -[SIGNAL] [file_or_directory_or_socket]
Per elencare tutti i segnali noti a fuser
, esegui:
fuser -l
L'output mostra 31 segnali che fuser
poter usare. Quindi, durante l'esecuzione di fuser -k -[SIGNAL]
, specificare il segnale per nome o numero (da -1 a -31). Ad esempio, per consentire a un processo di eseguire un arresto controllato, utilizza -TERM
o -5
come -[SIGNAL]
.
Ad esempio, per terminare il processo utilizzando la porta TCP 631 utilizzando il TERM
segnale, esegui:
sudo fuser -ki -TERM -n tcp 631
Un'altra opzione è usare -5
come -[SIGNAL]
e 631/TCP come nome della porta:
sudo fuser -ki -5 631/TCP
Il risultato è lo stesso in entrambi i casi. Cioè, usando TERM
consente l'uscita graduale e il -ki
flag chiede conferma, riducendo le possibilità di errore.
Per controllare le funzioni e i valori numerici di altri segnali Linux standard, eseguire:
man 7 signal
Conclusione
Dopo aver letto questo tutorial, sai come trovare un processo utilizzando un file, una directory o un socket o come terminare i processi con fuser
.
Successivamente, scopri altri modi per terminare qualsiasi processo, nonché come elencare i processi in Linux.