Úvod
fuser
příkaz (Najít USER ) je nástroj pro správu procesů, který identifikuje procesy pomocí souboru, adresáře nebo soketu. Navíc fuser
poskytuje informace o vlastníkovi procesu a typu přístupu a ukončuje příslušné procesy.
Tento článek vysvětlí, jak používat fuser
Linuxový příkaz s příklady.

Předpoklady
- Systém se systémem Linux.
- Přístup k terminálu.
- Oprávnění sudo.
Syntaxe fixační jednotky Linux
fuser
příkaz má několik možných typů syntaxe:
- Pouze možnosti . Proveďte akci, která není specifická pro cílový adresář, soubor nebo soket.
fuser [option]
- Určete adresář, soubor nebo soket . Vyhledejte všechny procesy běžící v cílové cestě a uveďte jejich PID.
fuser [file_or_directory_or_socket]
- Určete možnosti a adresář, soubor nebo soket . Upravte vyhledávání a proveďte konkrétní akci v procesu. Například jej ukončit.
fuser [options] [file_or_directory_or_socket]
- Žádné možnosti . Zobrazuje „Nebyla zadána žádná specifikace procesu“ zprávu a obrazovku nápovědy.

Možnosti fixační jednotky Linux
fuser
příkaz funguje i tehdy, když zadáte pouze soubor, adresář nebo soket. Přesto použití možností poskytuje podrobnější výsledky.
Níže uvedená tabulka ukazuje nejběžnější fuser
možnosti:
Příkaz | Popis |
---|---|
-v , --verbose | Zobrazuje pole USER, PID, ACCESS a COMMAND namísto pouze výpisu PID. |
-n , --namespace | Změní jmenný prostor z výchozí hodnoty na novou. |
-m , --mount | Určuje soubor patřící k souboru a uvádí všechny procesy přistupující k souborům v tomto souborovém systému. |
-k , --kill | Zabije procesy. |
-i , --interactive | Před ukončením procesu požádá uživatele o potvrzení. |
-[SIGNAL] | Zabije procesy se zadaným signálem místo výchozího signálu (SIGKILL). |
-l , --list-signals | Uvádí všechny názvy signálů, které může používat fuser . |
-a , --all | Zobrazuje soubory zadané v příkazu, ke kterému přistupuje alespoň jeden proces. |
-u , --user | Přidá uživatelské jméno vlastníka procesu ke každému PID. |
-4 , --ipv4 | Vyhledává pouze sokety IPv4. |
-6 , --ipv6 | Vyhledávat pouze sokety IPv6. |
-M , --ismountpoint | Zabije procesy, pouze pokud NAME specifikuje přípojný bod. |
-w | Zabijte pouze procesy s přístupem pro zápis. |
-s , --silent | Představuje tichou operaci ignorující -u a -v možnosti. |
- | Resetuje všechny možnosti. |
Příklady příkazů linuxové fixační jednotky
fuser
je dokonalý linuxový nástroj pro správu procesů. Chcete-li nástroj využít na maximum, přečtěte si níže uvedené sekce, kde najdete běžné fuser
příklady.
Vyhledání procesů v adresáři
Základní fuser
role je identifikovat, které procesy používají soubory v konkrétním adresáři. Syntaxe je:
fuser [directory]
Chcete-li například vypsat procesy spuštěné v aktuálním adresáři, použijte tečku (.
) :
fuser .

Výstup uvádí PID všech procesů přistupujících k aktuálnímu adresáři.
Terminál zobrazí Domů složku jako aktuální. Proto použití této cesty ke složce vytiskne stejný výstup:
fuser /home/sara

Chcete-li vytisknout čitelnější výstup, použijte -v
(verbose) volba před adresářem:
fuser -v .

Stejný příkaz funguje v jakémkoli jiném adresáři. Identifikujte například procesy v WhatIsThis adresář umístěný v Domů složka s:
sudo fuser -v /home/sara/WhatIsThis

Poznámka: Pomocí sudo
vytiskne více procesů, včetně těch, které vlastní root.
fuser -v .
výstup je podrobný a obsahuje následující sloupce:
- UŽIVATEL - Vlastník procesu.
- PID – ID procesu.
- PŘÍSTUP – Typ přístupu.
- PŘÍKAZ - Příkaz provádějící proces.
Ve výše uvedených příkladech je ve sloupci přístupu zobrazen symbol c , který představuje aktuální adresář. Další typy přístupu a symboly jsou:
- e - Spustitelný soubor je spuštěn.
- f - Otevřete soubor.
- F - Soubor otevřený pro zápis.
- r - Kořenový adresář.
- m - mmapovaný soubor nebo sdílená knihovna.
Seznam procesů pomocí souboru
Najděte procesy přistupující k souboru spuštěním fuser
s cestou k názvu souboru.
fuser -v [filename]
Podívejte se například na procesy využívající this_is_a_new_text soubor na Domů adresář s:
sudo fuser -v /home/sara/this_is_a_new_text

Výstup zobrazuje:
- Root jako vlastník procesu.
- PID procesu.
- Typ přístupu f představující otevřený soubor.
- Příkaz
less
přístup k souboru.
fuser
příkaz také funguje na spustitelném souboru, jako je PYTHON3 v adresáři bin:
sudo fuser -v /bin/python3

Výstup příkazu:
- Root jako vlastník procesu.
- PID procesu.
- Symbol přístupu e , což znamená, že soubor je spustitelný soubor.
- Příkaz
networkd-dispat
spuštění souboru.
Vyhledání procesů pomocí zásuvky
Chcete-li najít procesy využívající sokety TCP a UDP, použijte:
fuser -v -n [socket_type] [port]
Nebo:
fuser -v [port]/[socket_type]
-n
flag vybere odpovídající typ soketu (TCP nebo UDP) jako jmenný prostor. Například identifikujte proces běžící na portu TCP 631 pomocí:
sudo fuser -v -n tcp 631

Kratší syntaxe je:
sudo fuser -v 631/tcp

V obou případech příkaz vytiskne PID procesu, F jako typ přístupu a cupsd
příkaz.
Najděte proces přistupující k souborovému systému
Použijte -m
flag with fuser k identifikaci všech procesů přistupujících k souborovému systému zacílením na soubor patřící tomuto systému.
Chcete-li například vypsat všechny soubory a procesy spuštěné v souborovém systému, ke kterému tento_je_nový_text soubor patří, zadejte:
sudo fuser -v -m this_is_a_new_text

Zabít procesy
Příkaz fixační jednotky s -k
příznak ukončí procesy ve vybrané cestě. Například proces spouští this_is_a_new_text soubor na Domů adresář. Soubor se otevře příkazem less.

Použijte fuser -k
Chcete-li zabít pouze proces přistupující k tomuto souboru, ne každý proces používající Domov adresář:
sudo fuser -v -k /home/sara/this_is_a_new_text

Terminál po žádném z těchto dvou příkazů nic nevytiskne. Dále cílení na soubor s fuser
také nevytiskne žádné výsledky. To znamená, že proces je ukončen:
sudo fuser -v /home/sara/this_is_a_new_text

Chcete-li to potvrdit, zkontrolujte this_is_a_new_text soubor dříve otevřený s less
:

Výstup zobrazuje zprávu zabito a nový prázdný řádek terminálu potvrzující, že proces je ukončen.
Interaktivně zabíjet procesy
Příznak -k
zabije jakýkoli proces používající konkrétní soubor. Pokud je však jmenným prostorem adresář, fuser -k
zabije všechny procesy přistupující k tomuto adresáři. Spuštění tohoto příkazu v Domů adresář bez určení souboru, ukončí proces s operačním systémem a vypne systém .
Abyste předešli chybám, spusťte fuser
v interaktivním režimu s -ki
volba. Interaktivně ukončujte procesy v Domů adresář s:
fuser -ki .

Příkaz požaduje potvrzení pokaždé před ukončením procesu. Proto stiskněte y ukončete proces a přejděte k dalšímu, nebo zvolte N přeskočíte na další proces.
Odeslat signál
Při provádění fuser
s -k
, SIGKILL signál je odeslán procesu. Chcete-li však přerušit normální fuser -k
spuštění a ukončení procesů s jiným signálem, zahrňte -[SIGNAL]
vlajka.
fuser -k -[SIGNAL] [file_or_directory_or_socket]
Chcete-li zobrazit seznam všech signálů známých fuser
, spustit:
fuser -l

Výstup zobrazuje 31 signálů, které fuser
může použít. Proto při provádění fuser -k -[SIGNAL]
, specifikujte signál jménem nebo číslem (-1 až -31). Chcete-li například umožnit procesu provést řízené vypnutí, použijte -TERM
nebo -5
jako -[SIGNAL]
.
Chcete-li například zabít proces pomocí portu TCP 631 pomocí TERM
signál, proveďte:
sudo fuser -ki -TERM -n tcp 631

Další možností je použít -5
jako -[SIGNAL]
a 631/TCP jako název portu:
sudo fuser -ki -5 631/TCP

Výsledek je v obou případech stejný. Tedy pomocí TERM
umožňuje měkké ukončení a -ki
flag žádá o potvrzení, čímž se snižuje možnost chyb.
Chcete-li zkontrolovat funkce a číselné hodnoty ostatních standardních signálů Linuxu, spusťte:
man 7 signal

Závěr
Po přečtení tohoto návodu víte, jak najít proces pomocí souboru, adresáře nebo soketu nebo jak ukončit procesy pomocí fuser
.
Dále se naučte další způsoby, jak zabít jakýkoli proces, a také jak vypsat procesy v Linuxu.