GNU/Linux >> Znalost Linux >  >> Linux

5 Praktické příklady příkazů linuxové fixační jednotky

Nástroj fixační jednotky v Linuxu je mocný nástroj. Jak název napovídá, poskytuje informace o uživateli souboru nebo procesu, který aktuálně používá soubor nebo adresář.

Funkce fixační jednotky se však neomezuje pouze na poskytování informací o procesu. Článek vysvětluje, jak používat utilitu fixační jednotky, pomocí 5 praktických příkladů.

1. Kdo používá soubor nebo adresář?

Toto je základní použití příkazu fixační jednotky. tj. k identifikaci, které procesy používají konkrétní soubor nebo adresář.

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

Ve výše uvedeném příkladu jsme použili nástroj fixační jednotky k nalezení všech procesů pomocí aktuálního adresáře „./“.

Vidíme, že výstup se skládá z ID procesů procesů využívajících fixační jednotku, ale za všemi PID následuje znak ‚c‘. Označuje typ přístupu. Typ přístupu může být některý z následujících:

  • c      aktuální adresář
  • e      běží spustitelný soubor
  • f      otevřít soubor. f je ve výchozím režimu zobrazení vynecháno
  • F      otevřete soubor pro zápis. F je ve výchozím režimu zobrazení vynecháno
  • r      kořenový adresář
  • m      mmapovaný soubor nebo sdílená knihovna

Takže „c“ ve výstupu by znamenalo, že tyto procesy používají tento adresář jako svůj aktuální adresář.

Použijte volbu -v k zobrazení podrobných informací ve výstupu:

$ 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

Výše tedy vidíme, že spuštěná fixační jednotka v aktuálním adresáři poskytuje informace o všech procesech, které tento adresář používají.

2. fixační jednotka na spustitelném souboru

socket_serv je spustitelný program v jazyce C, což je TCP server, který naslouchá na konkrétním portu.

$ ./socket_serv

Když spustíte fixační jednotku na tomto spustitelném souboru, uvidíte následující:

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

Specifikátor přístupu v tomto příkladu je „e“. Liší se od specifikátoru přístupu, který jsme viděli ve výše uvedených příkladech. Znamená to, že soubor je spustitelný soubor.

3. Zkontrolujte procesy pomocí soketů TCP/UDP

Pomocí fixačního zařízení můžeme také kontrolovat procesy pomocí TCP/UDP socketů. Vzhledem k tomu, že výše uvedený spustitelný soubor socket_serv sample C program běží na TCP portu 5000, použijte na tomto socketu utilitu fuser.

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

Vidíme tedy, že fixační jednotka poskytuje všechny podrobné informace o procesu běžícím na portu TCP 5000.

Kromě výše uvedených příkladů můžeme pomocí tohoto nástroje použít příznak „-m“ k zobrazení procesů pomocí připojeného souborového systému, jako je jednotka USB.

4. Zabijte procesy, které používají konkrétní program

Doposud jsme se dozvěděli, že fuser poskytuje informace o procesech pomocí souborů, adresářů, soketů atd. Síla této utility se však neomezuje pouze na poskytování informací. Pomocí tohoto nástroje můžete také ukončit procesy.

Viděli jsme, že v systému běží TCP server, který přistupuje k binárnímu souboru ‚socket_serv‘. Nyní zkusme zabít proces pomocí tohoto binárního souboru pomocí fixační jednotky.

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

Všimněte si, že jsme použili příznak „-k“ k ukončení procesu pomocí souboru „socket_serv“. Podívejme se na druhém terminálu, kde server běžel.

$ ./socket_serv
Killed

Již jsme vám vysvětlili, jak můžete zabít proces pomocí 4 různých metod. Nyní znáte ještě jednu metodu, jak proces zabít.

5. Interaktivně zabíjet procesy pomocí fixační jednotky

Ve výše uvedeném příkladu jsme viděli, že příznak „-k“ se používá, když chceme zabít procesy pomocí konkrétního souboru, ale abychom se vyhnuli náhodnému zabití procesů, existuje další možnost „-i“. Pokud použijeme tuto možnost, pak ‚fuser‘ poběží v interaktivním režimu a před ukončením procesu se zeptá. Viz příklad níže.

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

Vidíme tedy, že pomocí ‚-k‘ a ‚-i‘ můžeme selektivně zabíjet procesy pomocí konkrétního souboru.

Toto je velmi výkonné použití příkazu „fuser“.

Předpokládejme, že chcete soubor smazat násilně, ale je používán mnoha procesy, pak vám procesy nedovolí soubor odstranit. V takovém případě můžete použít fixační nástroj k ukončení všech procesů (nebo vybraných procesů), které daný soubor používají.

$ 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

Všimněte si, že použití ‚-k‘ odešle signál SIGKILL procesům používajícím tento konkrétní soubor. Volbou -SIGNAL můžeme poslat jakýkoliv jiný signál. Seznam signálů podporovaných fixační jednotkou je dán:

$ 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

Například následující odešle SIGHUP místo SIGKILL, když použijete volbu -k.

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

Linux
  1. 10 Praktické příklady použití příkazu scp

  2. cp Command v Linuxu:7 praktických příkladů

  3. Linux Shutdown Command:5 praktických příkladů

  1. 5 Praktické příklady příkazu dd v Linuxu

  2. 10 Praktické příklady příkazů Linux nm

  3. Příklady použití příkazu dmsetup v Linuxu

  1. 16 Praktické příklady příkazu Linux LS pro začátečníky

  2. 7 Praktické příklady cd Command v Linuxu

  3. Příklady příkazů fuser v Linuxu