GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare e sfruttare al meglio il comando fusore in Linux

Supponiamo che ti venga assegnato un compito per identificare i processi che stanno usando un particolare file, e quindi ucciderli uno per uno - tutto questo deve essere fatto dalla riga di comando. Cosa faresti? Bene, se sei un principiante della riga di comando, sono sicuro che saresti all'oscuro, chiedendo aiuto in giro.

Ma i professionisti della riga di comando probabilmente avranno un'idea dell'esistenza di un'utilità della riga di comando in Linux che consente di identificare i processi in base ai file (o directory o socket) a cui accedono. Non solo, lo strumento ti consente anche di uccidere questi processi, quindi non devi usare il kill o uccidi tutti comandi separatamente. L'utilità della riga di comando di cui stiamo parlando è fusore .

Se non sei ancora a conoscenza di questa utility e vuoi capire come usarla, non cercare oltre, poiché in questo articolo parleremo di fusore nel dettaglio, attraverso alcuni esempi di facile comprensione.

Ma prima di andare avanti, tieni presente che tutti gli esempi, i comandi e le istruzioni menzionati in questo tutorial sono stati testati su Ubuntu 16.04 LTS e fuser la versione del comando che abbiamo usato è la 22.21.

Comando Linux fusore

Il fusore comando - come ho già accennato in precedenza - viene utilizzato principalmente per identificare i processi utilizzando file, directory o socket. Lo strumento visualizza fondamentalmente i PID dei processi che stanno utilizzando il file il cui nome è passato come argomento al comando.

Ecco il fusore comando in azione nella sua forma più elementare:

Come chiaro dallo screenshot qui sopra, abbiamo provato a usare fusore per sapere quali processi stanno usando /home/himanshu directory e il comando - nel suo output - ha prodotto un elenco di ID di processo. Fin qui tutto bene, ma qui ci sono un paio di problemi.

Innanzitutto, cos'è quella "c" aggiunta a ciascun PID? Una rapida occhiata alla pagina man del comando rivela che nella modalità di visualizzazione predefinita, il fusore comando non solo mostra i PID dei processi che accedono al file o alla directory, ma mostra anche il tipo di accesso.

Ogni tipo di accesso è contraddistinto da una lettera:

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

Ora, tornando all'esempio di cui stavamo discutendo, la lettera 'c' nell'output indica che tutti i processi i cui PID sono elencati nell'output stanno accedendo a /home/himanshu directory come directory corrente.

Tieni presente che un processo può avere più tipi di accessi per un file o una directory. Ad esempio, l'output seguente mostra che la directory root (/) è accessibile da molti processi come directory corrente e root.

Finora, il fusore l'output che stiamo vedendo contiene solo ID di processo e nient'altro. Non sarebbe meglio se venissero visualizzati anche i nomi dei processi? Bene, per questo devi usare -v opzione della riga di comando. Segue un esempio:

Andando avanti, per aggiungere il nome utente del titolare del processo a ciascun PID, utilizzare -u opzione della riga di comando. Ecco un esempio:

Nota:se il file o la directory in questione si trova su un file system montato o su un dispositivo a blocchi, utilizzare -m opzione della riga di comando. "Sono elencati tutti i processi che accedono ai file su quel file system", dice la pagina man. "Se viene specificato un file di directory, viene   automaticamente cambiato in NAME/. per utilizzare qualsiasi file system che potrebbe essere montato su quella directory."

Come terminare i processi usando il fuser

Ora che abbiamo discusso del fusore nozioni di base, veniamo al compito che ho menzionato all'inizio:come terminare i processi usando fusore ? Facciamo un esempio più semplice per questo caso. Quello che farò è eseguire un eseguibile e mentre è in esecuzione, proverò a terminare il processo usando fuser .

Quindi, ecco l'eseguibile che è stato lanciato:

Ed ecco il fusore comando che dovrebbe idealmente terminare il processo avviato da test-fuser eseguibile.

fuser -v -k test-fuser

Oh, prima di andare avanti ed eseguire questo comando, lascia che ti dica che il -k l'opzione della riga di comando dice a fusore per terminare il processo (o i processi) utilizzando il file o la directory.

Ecco cosa è successo quando è stato eseguito il comando sopra menzionato:

Come chiaro dallo screenshot sopra, usando il -k opzione della riga di comando con fusore ucciso il test-fuser processi. Per assicurarsi che il fusore Il comando richiede la conferma dell'utente prima di terminare un processo, utilizzare -i opzione. Vedi esempio sotto:

Di seguito sono riportati un paio di importanti dettagli relativi al fusore che dovresti conoscere durante l'utilizzo dell'opzione -k:

  • Con -k, il comando fusore invia il segnale SIGKILL per impostazione predefinita. Ma puoi cambiare questo comportamento usando l'opzione -SIGNAL.
  • Un processo del fusore non si auto-uccide mai, ma può uccidere altri processi del fusore.

fusore - altri dettagli

A parte le informazioni menzionate finora, ci sono molti altri dettagli che vale la pena tenere a mente. È possibile accedere a tutte queste informazioni andando alla pagina man del comando. Ad esempio, di seguito sono riportate le informazioni che il fusore elenchi di pagine man nella sezione 'Restrizioni':

       Processes accessing the same file or file system several times  in  the
       same way are only shown once.

       If the same object is specified several times on the command line, some
       of those entries may be ignored.

       fuser may only be able to gather partial information  unless  run  with
       privileges.   As  a consequence, files opened by processes belonging to
       other users may not be listed and  executables  may  be  classified  as
       mapped only.

       Installing  fuser SUID root will avoid problems associated with partial
       information, but may be undesirable for security and privacy reasons.

       udp and tcp name spaces, and UNIX domain sockets can't be searched with
       kernels older than 1.3.78.

       Accesses by the kernel are only shown with the -v option.

       The  -k  option  only  works  on processes.  If the user is the kernel,
       fuser will print an advice, but take no action beyond that.

Conclusione

Come ormai avrai capito, fusore è un'utilità della riga di comando estremamente utile in Linux. La cosa buona è che lo strumento non è né difficile da capire, né da usare, quindi anche i principianti possono iniziare facilmente con esso. Un aspetto che non abbiamo toccato qui è che il comando ti consente di identificare e persino uccidere i processi in esecuzione su porte particolari, rendendolo uno strumento difficile da ignorare anche per gli amministratori di rete.


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come creare un alias e utilizzare il comando alias in Linux

  4. Come utilizzare il comando id in Linux

  5. Come installare e utilizzare il comando Ping in Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come installare e utilizzare il comando Ack in Linux

Come utilizzare il comando RPM in Linux

Linux perf:come utilizzare il comando e il profiler

Come utilizzare il comando which in Linux