GNU/Linux >> Linux Esercitazione >  >> Linux

5 Esempi pratici di comandi per il fusore Linux

L'utilità del fusore in Linux è uno strumento potente. Come suggerisce il nome, fornisce informazioni sull'utente del file o sul processo che sta attualmente utilizzando il file o la directory.

Ma la funzionalità del fusore non si limita solo a fornire informazioni sul processo. L'articolo spiega come utilizzare l'utilità fusore con 5 esempi pratici.

1. Chi utilizza un file o una directory?

Questo è l'uso di base del comando fusore. cioè per identificare quali processi stanno usando un particolare file o directory.

$ fuser  .
./:                   3965c  4175c  4281c  4334c  4337c

Nell'esempio precedente abbiamo utilizzato l'utilità fusore per trovare tutti i processi utilizzando la directory corrente './' .

Vediamo che l'output è costituito dagli ID di processo dei processi che utilizzano il fusore, ma tutti i PID sono seguiti da un carattere 'c'. Indica il tipo di accesso. Il tipo di accesso può essere uno qualsiasi dei seguenti:

  • c      directory corrente
  • e      eseguibile in esecuzione
  • f      apri il file. f viene omesso nella modalità di visualizzazione predefinita
  • F      apri il file per la scrittura. F viene omesso nella modalità di visualizzazione predefinita
  • r      directory principale
  • m      file mappato o libreria condivisa

Quindi 'c' nell'output significherebbe che questi processi stanno usando questa directory come directory corrente.

Utilizzare l'opzione -v per visualizzare informazioni dettagliate nell'output:

$ fuser -v ./
           USER        PID ACCESS COMMAND
./:       himanshu   3965 ..c..    bash
          himanshu   4175 ..c..    gedit
          himanshu   4281 ..c..    bash
          himanshu   4334 ..c..  socket_serv
          himanshu   4337 ..c..    bash

Quindi vediamo sopra che l'esecuzione di fuser nella directory corrente fornisce le informazioni su tutti i processi che utilizzano questa directory.

2. fusore su un eseguibile

socket_serv è un programma C eseguibile che è un server TCP in ascolto su una porta particolare.

$ ./socket_serv

Quando esegui fuser su questo eseguibile, vedrai quanto segue:

$ fuser -v socket_serv
                     USER        PID    ACCESS       COMMAND
socket_serv:         himanshu   4334    ...e.        socket_serv

Lo specificatore di accesso in questo esempio è "e". È diverso dallo specificatore di accesso che abbiamo visto negli esempi precedenti. Indica che il file è un eseguibile.

3. Verifica i processi che utilizzano socket TCP/UDP

Usando il fusore possiamo anche controllare i processi usando i socket TCP/UDP. Poiché l'eseguibile del programma C di esempio socket_serv sopra indicato è in esecuzione sulla porta TCP 5000, utilizziamo l'utilità fusore su questo socket.

$ fuser -v -n tcp 5000
                       USER        PID ACCESS COMMAND
5000/tcp:            himanshu   4334   F....  socket_serv

Quindi vediamo che il fusore fornisce tutte le informazioni dettagliate sul processo in esecuzione sulla porta TCP 5000.

Oltre agli esempi precedenti, possiamo utilizzare il flag '-m' con questa utilità per visualizzare i processi utilizzando un file system montato come un'unità USB.

4. Elimina i processi che utilizzano un particolare programma

Finora abbiamo appreso che fuser fornisce informazioni sui processi utilizzando file, directory, socket ecc. Ma la potenza di questa utility non si limita a fornire solo informazioni. Puoi anche terminare i processi utilizzando questa utilità.

Abbiamo visto che un server TCP è in esecuzione sul sistema che sta accedendo al file binario "socket_serv". Ora, proviamo a terminare il processo usando questo file binario usando il fusore.

$ fuser -v -k socket_serv
                      USER        PID ACCESS COMMAND
socket_serv:         himanshu   4334 ...e.   socket_serv

Nota che abbiamo usato il flag '-k' per terminare il processo usando il file 'socket_serv'. Vediamo sull'altro terminale dove era in esecuzione il server.

$ ./socket_serv
Killed

Ti abbiamo già spiegato come uccidere un processo usando 4 metodi diversi. Ora conosci un altro metodo per terminare un processo.

5. Termina interattivamente i processi utilizzando il fusore

Nell'esempio precedente abbiamo visto che il flag '-k' viene utilizzato quando vogliamo terminare i processi utilizzando un file particolare ma per evitare l'uccisione accidentale di processi, esiste un'altra opzione '-i'. Se utilizziamo questa opzione, 'fuser' verrà eseguito in modalità interattiva e chiederà prima di terminare il processo. Vedi l'esempio qui sotto.

$ fuser -v -k -i socket_serv
                      USER        PID ACCESS COMMAND
socket_serv:         himanshu   5643 ...e.   socket_serv
Kill process 5643 ? (y/N) y

Quindi vediamo che usando "-k" e "-i" possiamo uccidere selettivamente i processi usando un particolare file.

Ora, questo è un uso molto potente del comando "fusore".

Supponiamo di voler eliminare un file con forza ma è utilizzato da molti processi, quindi i processi non ti permetteranno di eliminare il file. In tal caso, puoi utilizzare l'utilità fusore per terminare tutti i processi (o processi selezionati) che utilizzano quel file.

$ fuser -v -k -i ./
           USER        PID ACCESS COMMAND
./:       himanshu   3965 ..c..    bash
          himanshu   4175 ..c..    gedit
          himanshu   4281 ..c..    bash
          himanshu   4334 ..c..  socket_serv
          himanshu   4337 ..c..    bash
Kill process 3965 ? (y/N) y
Kill process 4175 ? (y/N) y
Kill process 4281 ? (y/N) y
Kill process 4334 ? (y/N) y
Kill process 4337 ? (y/N) y

Nota che l'uso di '-k' invia un segnale SIGKILL ai processi che utilizzano quel particolare file. Possiamo usare l'opzione -SIGNAL per inviare qualsiasi altro segnale. L'elenco dei segnali supportati dal fusore è dato da:

$ fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

Ad esempio, quanto segue invia SIGHUP invece di SIGKILL, quando usi l'opzione -k.

$ fuser -v  -k -HUP -i ./

Linux
  1. 7 Esempi pratici di comando cd in Linux

  2. 10 esempi pratici di utilizzo del comando scp

  3. Comando cp in Linux:7 esempi pratici

  4. Comando di arresto di Linux:5 esempi pratici

  5. 5 Esempi pratici del comando dd in Linux

12 Esempi pratici di In Command in Linux

I 50 esempi pratici del comando SED in Linux

15 esempi pratici di comando Rsync in Linux

5 esempi pratici di Tail Command in Linux

echo Command in Linux:7 esempi pratici

Pratico comando Ping negli esempi di Linux