Jak zabít proces v Linuxu

Všichni jsme měli dny, kdy náš počítač běží výjimečně pomalu a zadrhává se při provádění i těch základních úkolů. V systému Windows máte pouze Správce úloh systému Windows, který kontroluje a ukončuje procesy, které nejsou tak důležité, ale spotřebovávají obrovské množství paměti. V Linuxu však máte k dispozici celý arzenál příkazů a nástrojů GUI pro správu těchto úkolů. V tomto článku ukážeme některé snadné metody příkazového řádku (CLI) a také metody GUI, jak zabít proces v Linuxu.

Ukončit proces v Linuxu (2023)

Než se ale ponoříme do světa procesního managementu v Linuxu, pochopme, co přesně je proces a co je ID procesu v systémech Linux.

Co jsou procesy v Linuxu

V Linuxu je každá aktuálně spuštěná instance programu známá jako „proces“, zatímco každý spustitelný soubor je znám jako program. Když je spuštěn jakýkoli program, je vytvořen proces a každému procesu je přiřazeno jedinečné 5místné identifikační číslo známé jako „ID procesu“. Když proces dokončí provádění nebo je násilně ukončen, jeho ID procesu se přiřadí procesu dalšího na řadě.

Zabijte proces pomocí příkazového řádku v Linuxu

Ačkoli se používání terminálu může někdy zdát zastrašující ve srovnání s používáním nástrojů GUI pro základní úkoly, správa různých procesů se stane mnohem jednodušší, jakmile pochopíte příkazy a jejich různé možnosti.

Ukončovací signály

Když se pokusíte zabít proces buď z GUI nebo CLI v Linuxu, jádro pošle procesu ukončovací signál. Proces se chová podle toho v závislosti na přijatém signálu. Každému z těchto signálů je přiřazeno specifické číslo, které program rychle pochopí. Existuje mnoho typů ukončovacích signálů, ale zde jsme vysvětlili pouze ty podstatné:

SignalNumeric ValueDescriptionSIGHUP1Je to zkratka pro ‚Signal Hangup‘
Odesílá se, když je terminál zavřený. SIGINT2 Zkratka znamená „přerušení signálu“
Odesílá se, když uživatel ukončí proces.SIGKILL9Je to zkratka pro ‚Signal Kill‘
Odesílá se, když potřebujete okamžitě ukončit procesSIGTERM15Zkratka znamená „Ukončení signálu“
Odesílá se, když potřebujete ukončit proces a uvolnit spotřebované prostředkySIGSTOP19 – pro ARM, x86
17 – pro ALPHA
23 – pro MIPS
24 – PA-RISCIt znamená „Signal Stop“
Odesílá se, když potřebujete pozastavit proces a obnovit jej později. Nejčastěji používané signály jsou SIGKILL (9) a SIGTERM (15).

  Jak přepnout na odemknutí přístupovým kódem na iPhone X

Identifikujte ID procesů

Než proces ukončíte, musíte znát některé podrobnosti o procesu, jako je ID procesu, doba běhu atd. Chcete-li znát podrobnosti o procesu, použijte příkaz ps:

ps

Pomocí příkazu ps musíte proces vyhledat rolováním a poznamenáním si jeho názvu, což může být těžkopádné. Místo toho můžete dokonce použít příkaz grep s příkazem ps v potrubí, jak je znázorněno níže:

ps | grep

Aby to bylo jednodušší, existuje samostatný příkaz, který zobrazuje pouze ID procesu jakéhokoli běžícího procesu, který potřebujete znát. Syntaxe pro použití příkazu pidof je:

pidof

Ukončete proces pomocí příkazu kill

Jakmile si poznamenáte ID procesu procesu, který chcete ukončit, nejběžnějším příkazem používaným k ukončení programů ve vašem systému Linux je příkaz kill. Syntaxe pro použití příkazu kill je:

kill

Parametr je volitelný a příkaz kill standardně odesílá signál SIGTERM (15). Jakýkoli jiný signál můžete odeslat podle jeho číselné hodnoty nebo skutečného názvu signálu z výše uvedené tabulky.

Ukončete proces pomocí příkazu pkill

Pokud máte pocit, že hledání id procesu je nepohodlné, můžete použít příkaz pkill. Hledá procesy odpovídající vzoru a pak jej zabije. Syntaxe pro použití příkazu pkill je:

pkill

Některé z běžných možností spárování s příkazem pkill jsou:

OptionDescription-nVybírá pouze nejnovější procesy odpovídající procesu id-uVybírá procesy vlastněné konkrétním uživatelem-xSelects procesy, které přesně odpovídají vzoru

To je zvláště důležité, když více uživatelů pracuje na různých instancích stejného programu ve stejném systému a jedna z instancí se začne chovat neočekávaně. Například na níže uvedeném snímku obrazovky zabíjíme instanci „gedit“ vlastněnou uživatelem „intel“ pomocí příkazu pkill v Linuxu:

pkill -u intel gedit

Ukončete proces pomocí příkazu killall

Příkaz killall funguje podobně jako příkaz kill, ale zabije všechny procesy odpovídající názvu procesu bez ohledu na uživatele. Ve výchozím nastavení vysílá signál SIGTERM, pokud není uvedeno jinak. Zajímavou věcí je, že příkaz killall se nikdy nemůže zabít, ale může ukončit jiné instance příkazu killall. Syntaxe pro použití příkazu killall je:

killall

Některé z možností spárování s příkazem killall jsou:

OptionDescription-rInterpretuje název_procesu jako vzor regulárního výrazu a poté ukončí procesy odpovídající vzoru-zruší zadaný proces vlastněný zadaným vlastníkem.-oZabije zadané procesy starší (zahájené dříve) než v konkrétním čase.-yZabije zadané procesy mladší ( začala po) konkrétním čase.

Příkaz killall může být užitečný k ukončení série stejného procesu nebo dokonce všech procesů vlastněných konkrétním vlastníkem. Zde v našem příkladu zabíjíme všechny procesy „usnutí na 500 sekund“ pomocí příkazu killall v Linuxu:

  Jak nastavit schůzku v Microsoft Teams

killall -v spát

Ukončete proces Linux pomocí příkazu top/htop

Tato metoda zabíjení procesů je užitečná, když nemáte ponětí, které procesy spotřebovávají maximum zdrojů. V obou příkazech můžete procházet všemi běžícími procesy nebo dokonce procesy zombie a můžete je rychle ukončit. Chcete-li ke sledování zdrojů použít příkaz top, použijte syntaxi v Terminálu:

horní

Pochopení výstupu:

Hlavní výstup příkazu top je rozdělen do sloupců, které jsou:

  • PID – zobrazuje ID procesu běžícího procesu
  • Uživatel – zobrazuje vlastníka procesu
  • PR – zobrazuje hodnotu priority procesu, která je přidělena operačním systémem
  • NI – zobrazuje pěkné hodnoty, které jsou jako přiřazení uživatelských hodnot pro ruční ovládání priority úkolu.
  • VIRT – zobrazuje množství virtuální paměti využívané procesem.
  • RES – zobrazuje množství fyzické paměti použité procesem
  • SHR – zobrazuje množství paměti sdílené jinými procesy
  • S – zobrazuje aktuální stav procesu, který může být:
    • D – nepřerušovaný spánek
    • R – běh
    • S – spící
    • T – zastaveno
    • Z – zombie
  • %CPU – Zobrazuje množství CPU využitého procesem v procentech
  • %MEM – Zobrazuje množství paměti RAM využité procesem v procentech
  • TIME+ – Zobrazuje celkovou dobu běhu procesu
  • Příkaz – Ukazuje, který příkaz byl pro proces vyvolán.
  • Pokud neznáte ID procesu úlohy, kterou chcete ukončit, procházejte seznam pomocí kláves se šipkami nebo vyhledejte název procesu v tabulce procesů v Linuxu.

    Chcete-li vyhledat název procesu, stiskněte na klávesnici ‚L‘ a zadejte název procesu, který chcete hledat. Jakmile najdete hanebný proces, stiskněte ‚k‘ na klávesnici, abyste proces ukončili. Nyní zadejte ID procesu nebo jej ponechte u aktuálně zvýrazněného procesu a stiskněte ‚ENTER‘. Dále zadejte ukončovací signál a poté stiskněte ‚ENTER‘ pro ukončení programu. Chcete-li se vrátit zpět k terminálu, stiskněte ‚q‘ na klávesnici.

    Ačkoli horní příkaz zobrazuje podrobnosti, jako je ID procesu, spotřeba paměti a další pro všechny běžící procesy, není příliš vhodný pro začátečníky, protože neukazuje žádné mapování kláves ani způsob použití. Na druhou stranu má příkaz htop uživatelsky přívětivější rozhraní, a to i pro nástroj příkazového řádku. Navíc zobrazuje všechny podrobnosti v samostatném pohledu, a proto nezaplňuje okno terminálu. Ve většině distribucí není předinstalovaný a k instalaci htop v Linuxu musíte použít následující příkaz:

    sudo apt install -y htop

    Chcete-li použít htop ke správě procesů v Linuxu, použijte příkaz níže:

    htop

    Chcete-li ukončit program, přejděte na název procesu, který chcete ukončit, stiskněte ‚F9‘ a poté stiskněte Enter. Pokud potřebujete vyhledat a zabít jakýkoli program, stiskněte na klávesnici ‚F3‘, zadejte jméno a stiskněte Enter. Název procesu se zvýrazní, stiskněte F9 a poté stiskněte Enter na klávesnici pro ukončení procesu.

      Oprava Scripted Diagnostics Nativní hostitel nefunguje

    Zabijte proces pomocí System Monitor v Linuxu

    Pokud máte pocit, že je pro vás metoda příkazového řádku obtížná, můžete použít vestavěný nástroj monitorování systému, který je k dispozici v každé distribuci Linuxu. Chcete-li zjistit, jak to funguje, otevřete nástroj sledování systému z nabídky Aplikace a postupujte podle níže uvedených kroků.

    1. Jakmile se otevře nástroj monitorování systému, uvidíte nahoře tři karty pojmenované — Procesy, Prostředky a Systém souborů. Chcete-li spravovat své procesy, přejděte na kartu „Procesy“. Zde uvidíte všechny vaše aktuálně běžící procesy. Stisknutím ‚CTRL+F‘ vyhledejte název procesu. Klikněte na název procesu, který chcete ukončit, a klikněte na „Ukončit proces“.

    2. Poté se zobrazí výzva k potvrzení, zda chcete proces ukončit či nikoli. Pokračujte a klikněte na velké červené tlačítko „Ukončit proces“, abyste proces v Linuxu ukončili.

    Často kladené otázky

    Jak zastavím všechny procesy v Linuxu?

    Pokud potřebujete zastavit všechny procesy (kromě přihlašovacího shellu, init a procesů specifických pro jádro) pro konkrétního uživatele v Linuxu, použijte buď příkaz pkill nebo killall podle syntaxe:

    pkill -u

    killall -u

    Pokud potřebujete ukončit každý proces pro každého uživatele včetně init systému, stiskněte klávesy ‚ALT + Prt Sc + o‘ na klávesnici.

    Je v pořádku ukončit proces?

    Když zavřete jakýkoli nepodstatný proces na pozadí nebo uživatelský proces, který spotřebovává velké množství systémové paměti, uvolníte prostředky, které nyní mohou využívat jiné procesy. Před ukončením jakéhokoli procesu se však ujistěte, že nezabíjíte zásadní proces operačního systému.

    Jaké jsou procesy na pozadí v Linuxu?

    V Linuxu jsou procesy na pozadí procesy, které mohou běžet bez instance shellu nebo jakéhokoli zásahu uživatele. Lze je zobrazit pomocí libovolného z příkazů – top, htop, ps atd.

    Co je to zombie proces?

    Proces, který byl zabit uživatelem, ale stále zabírá paměť, se nazývá zombie proces.

    Co dělá CTRL + Z v Linuxu?

    Když v Linuxu použijete CTRL + Z, odešle signál SIGTSTP, který proces pozastaví a odešle na pozadí. Když je proces na pozadí v pozastaveném stavu, nemůžete proces ukončit, dokud nebude vrácen zpět do popředí.

    Zabíjejte procesy v Linuxu snadno

    Zabíjení paměťových hogging procesů je docela zásadní úkol, který by se měl naučit každý uživatel. V tomto článku jsme ukázali jak metodu příkazového řádku, včetně příkazů jako killall a pkill, tak i metody grafického uživatelského rozhraní pro zabíjení procesů v Linuxu. Dokonce jsme podrobně popsali, jak používat oblíbené nástroje jako top a htop ke správě procesů na vašem počítači se systémem Linux. Pokud při používání těchto nástrojů k ukončení procesu narazíte na nějaké problémy, dejte nám vědět v komentářích níže.