GNU/Linux >> Znalost Linux >  >> Linux

Jak zabít procesy v Linuxu pomocí kill, killall a pkill

Co je to proces

Proces, známý také jako úloha, je běžící formou programu. Programy jsou uloženy na disku a procesy běží v paměti. Procesy mají vztah rodič/dítě. Proces může zplodit jedno nebo více potomků. Paralelně může běžet více procesů.

Výpis systémových procesů

Příkaz status status (ps) uvádí procesy, které jsou spojeny s vaším shellem.

# ps [options]

Pro každý proces zobrazí příkaz ps PID , identifikátor terminálu (TTY ), kumulativní doba provedení (TIME ) a název příkazu (CMD ). Například vypište aktuálně spuštěné procesy v systému pomocí příkazu ps.

# ps
  PID TTY          TIME CMD
 1442 pts/1    00:00:00 sudo
 1448 pts/1    00:00:00 su
 1449 pts/1    00:00:00 bash
 1666 pts/1    00:00:00 ps

Příkaz ps má několik možností, které můžete použít k zobrazení dalších informací o procesu.

  • -a :Vytiskne informace o všech nejčastěji požadovaných procesech, kromě vedoucích skupin procesů a procesů, které nejsou spojeny s terminálem
  • -e :Vytiskne informace o každém aktuálně spuštěném procesu
  • -f :Vygeneruje úplný seznam
  • -l :Vygeneruje dlouhý seznam
  • formát -o :Zapisuje informace podle specifikace formátu dané ve formátu. Lze zadat více voleb -o. Specifikace formátu je interpretována jako zřetězení všech argumentů možností formátu oddělených mezerami.

Výpis všech procesů

Použijte například ‘ps -ef ‘ k zobrazení seznamu všech procesů aktuálně naplánovaných ke spuštění v systému.

# ps -ef | more

Tady,

  • UID :Uživatelské jméno vlastníka procesu
  • PID :Jedinečné identifikační číslo procesu
  • PPID :Identifikační číslo nadřazeného procesu
  • ČAS :Čas zahájení procesu (hh:mm:ss)
  • TTY :Řídicí terminál pro proces. Všimněte si, že systémové procesy (démoni) zobrazují otazník (?), který označuje proces spuštěný bez použití terminálu.
  • ČAS :Kumulativní doba provádění procesu
  • CMD :Název příkazu, možnosti a argumenty

Ukončení procesu

Mohou nastat situace, kdy budete muset ukončit nechtěný proces. Proces se mohl dostat do nekonečné smyčky nebo mohl přestat reagovat. Můžete zabít nebo zastavit jakýkoli proces, který vlastníte. K ukončení jednoho nebo více procesů můžete použít následující dva příkazy:
– kill
– pkill

Příkazy kill a pkill vysílají signály procesům, které je nasměrují k ukončení. Každý signál má číslo, název a přidruženou událost. Níže jsou uvedeny některé z nejčastěji používaných signálů s jejich funkcemi.

Číslo Jméno Popis
1 SIGHUP Znovu načíst konfigurační soubor
2 SIGINT Přerušení klávesnicí (ctrl+c)
9 SIGKILL zabít proces
15 SIGTERM Okamžitě ukončete proces. (Ukončete proces kontrolovaným způsobem, aby bylo možné vyčištění)
18 SIGCONT Pokračujte v procesu zastaveném pomocí STOP
19 STOP Zastavit proces
Poznámka :Existují však procesy, které by neměly být ukončeny, například init proces. Zabití takových procesů může mít za následek zhroucení systému. Superuživatel může zabít jakýkoli proces v systému.

Ukončení procesu pomocí příkazu kill

Jakýkoli proces můžete ukončit vydáním příslušného signálu příslušnému procesu. Příkaz kill standardně vysílá signál 15, signál ukončení. Tento signál způsobí řádné ukončení procesu. Příkaz kill odešle signál ukončení jednomu nebo více procesům. Syntaxe pro použití příkazu kill je následující:

# kill [-signal] PIDs
Poznámka :Příkaz kill ukončí pouze ty procesy, které vlastníte. Uživatel root může použít příkaz kill pro jakýkoli proces.

Než budete moci proces ukončit, musíte znát PID procesu. K vyhledání PID procesu můžete použít buď příkaz ps nebo pgrep. Také můžete ukončit několik procesů současně zadáním více PID na jeden příkazový řádek. Podívejme se na příklad příkazu kill. Zabili bychom proces ‚sleep 400‘, jak je ukázáno níže.

# ps -ef | grep sleep
root      1337  1218  0 07:33 pts/0    00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep
#

Ukončení procesu pomocí příkazu pkill nebo killall

Případně můžete použít příkaz pkill nebo killall k odeslání ukončovacího signálu procesům.

# pkill [-options] PIDs

nebo

# killall [-options] PIDs

Příkaz pkill/killall vyžaduje, abyste místo PID procesu uvedli název. Například použijte příkaz pkill k ukončení procesu dtmail.

# pkill dtmail 
# pgrep -l mail
#

Násilné ukončení procesu:Signál 9

Některé procesy ignorují výchozí signál 15, který posílá příkaz kill. Pokud proces nereaguje na signál 15, můžete jej vynutit ukončení pomocí signálu 9 pomocí příkazu kill nebo pkill.

# kill -9 PID

nebo

# pkill -9 process_name
Poznámka :Odeslání signálu 15 nutně nezabije proces elegantně. Pouze pokud je signál zachycen procesem, sám se v pořádku vyčistí a zemře. Pokud ne, prostě zemře.


Linux
  1. Jak najít a zabít zombie proces v Linuxu

  2. Jak zabít běžící procesy v Linuxu

  3. Jak zabít proces v Linuxu pomocí příkazu?

  1. Jak zabít proces zombie na Linuxu

  2. Co jsou zombie procesy a jak najít a zabít zombie procesy?

  3. Rozdíl mezi Kill, Pkill a Killall?

  1. Správa procesů na Linuxu pomocí kill and killall

  2. Linux:Najděte a zabijte zombie procesy

  3. Jaký je rozdíl mezi kill , pkill a killall?