logo

Zabít příkaz

Co je to příkaz k zabití?

Linux je pokročilý a skvělý operační systém; není to však dokonalé. Několik aplikací se může začít chovat nedbale a stát se necitlivými nebo začít spotřebovávat několik systémových zdrojů.

Necitlivé aplikace nelze restartovat, protože skutečný aplikační proces nikdy zcela neskončí. Jediným řešením je restartování systému nebo ukončení procesu aplikace.

Existují různé nástroje, které nám umožňují ukončit chybné procesy spolu s zabít příkaz. Tento příkaz je nejrozšířenější v Linuxu.

arp příkaz

v Linux , lze příkaz kill (umístěný uvnitř /bin/kill) definovat jako vestavěný příkaz.

Slouží k ručnímu ukončení procesů. Chování příkazu kill se mezi shelly a shelly mírně liší /bin/kill samostatný spustitelný soubor.

Můžeme použít příkaz type pro zobrazení každého umístění v našem systému, které obsahuje kill:

 $ type -a kill 

Zabít příkaz

Příkaz kill přenese signál směrem k procesu, ve kterém proces dále ukončí. Když uživatel nepopíše žádný signál, který se má přenést pomocí příkazu kill, pak OBDOBÍ je přenesen signál (výchozí), který proces ukončí. Pokud signál není popsán, bude výchozí -patnáct ( -OBDOBÍ ).

Nejčastěji používané signály jsou následující:

    HUP (1)-Znovu načte proces.ZABIJTE (9)-Zabíjí proces.TERMÍN (15)-Půvabně zastaví proces.

Můžeme použít příkaz kill spolu s -l možnost získání seznamu všech dostupných signálů:

 $ kill -l 

Zabít příkaz

Tyto signály lze popsat třemi různými způsoby. Tyto způsoby jsou uvedeny níže:

  • Podle čísla (např. -6)
  • Bez předpony SIG (např. -kill)
  • S předponou SIG (např. -SIGkill)

Níže uvedené příkazy jsou si navzájem podobné:

jak změnit řetězec na int
  • $ kill -SIGHUP PID_NUMBER
  • $ zabít -HUP PID_NUMBER
  • $ zabít -1 PID_NUMBER

PID přidělené příkazu kill může být kdokoli z níže uvedených:

  1. Signál bude přenesen do procesu spolu s ID podobným PID, když je PID větší než nula.
  2. Signál bude přenesen do každého procesu v aktuální skupině procesů, když je PID ekvivalentní nule. Znamená to, že signál bude přenesen do každého procesu souvisejícího s GID Shell, který požaduje příkaz kill. Můžeme aplikovat ps -efj příkaz pro zobrazení ID skupiny procesů (GID).
  3. Signál bude přenesen do každého procesu spolu s podobným UID jako uživatel požadující příkaz, když je PID ekvivalentní -1. Pokud je žádající uživatel root, pak bude signál přenesen do každého procesu kromě procesu kill a init.
  4. Signál bude přenesen do každého procesu v rámci skupiny procesů spolu s GID podobným absolutní hodnotě PID, když je PID menší než -1.

Běžní uživatelé jsou schopni přenášet signály do svých procesů. Nezahrnuje však uživatele, kteří jsou spřízněni s jakýmkoli jiným uživatelem. Na druhé straně je uživatel root schopen přenést signál do procesů druhého uživatele.

  • PID -1 je velmi jedinečné, protože označuje každý proces kromě init a kill, což je rodičovský proces každého procesu v systému.
  • Záporné hodnoty PID se používají k označení ID skupiny procesů. Když předáme jakékoli ID skupiny procesů, pak každý proces uvnitř této skupiny dostane signál.
  • Pro zobrazení seznamu běžících procesů můžeme použít příkaz ps a ten nám ukáže běžící procesy spolu s číslem PID. Musíme zadat PID pro specifikaci, který proces by měl dostat signál příkazu kill.

Syntax:

 $ps 

Zabít příkaz

ps na: Tento příkaz se používá pro zobrazení každého běžícího procesu spolu s jeho PID a dalšími detaily. V případě, že neznáme ID procesu, můžeme použít tento příkaz.

Zabít příkaz

Možnosti příkazu kill

1. zabít -l: Tato volba se používá pro zobrazení každého existujícího signálu, můžeme použít následující volbu příkazu:

Syntax:

 $kill -l 

Zabít příkaz

2. zabít pida: Tato volba se používá pro ukázku, jak použít PID spolu s příkazem kill.

Syntax:

 $kill pid 

Zabít příkaz

3. zabít -L: Příkaz kill -L lze použít pro výpis existujících signálů ve formátu tabulky.

zapněte java

Syntax:

 /bin/kill -L 

Zabít příkaz

4. Přeložit číslo signálu: Jakékoli číslo signálu můžeme snadno převést na název signálu pomocí následujícího příkazu:

 /bin/kill --list=12 

Zabít příkaz