GNU/Linux >> Znalost Linux >  >> Linux

Jak zabít proces zombie na Linuxu

Šťastný Halloween Open SOURCE-rers!

Zde je příběh starý jako epocha čas. Od té doby, co existuje C a Unix a (později) Linux, máme zombie . Konkrétně existují procesy, které jsou označeny jako proces zombie . Některými nepochopený, ostatními ignorován a imunní vůči úsilí tolika z nás, kteří se snaží kill tyto procesy bez valného úspěchu. Proč?

Co je to proces v Linuxu?

Vše začíná spuštěním programu v Linuxu, a když se tak stane, jeho běžící instance se nazývá proces. Všechny procesy ve vašem prostředí Linux můžete zobrazit pomocí ps příkaz.

$ ps -ax
        PID TTY         STAT   TIME COMMAND
        1 ?     Ss      0:01 /usr/lib/systemd/systemd rhgb --switched-root --sys
        2 ?     S       0:00 [kthreadd]
        3 ?     I<      0:00 [rcu_gp]
        4 ?     I<      0:00 [rcu_par_gp]

Někdy proces spustí jiný proces, čímž se první proces stane rodičem druhého. pstree command je skvělý nástroj, který vám umožní vidět „genealogii“ procesů ve vašem systému.

$ pstree -psn
systemd(1)─┬─systemd-journal(952)
        ├─systemd-udevd(963)
        ├─systemd-oomd(1137)
        ├─systemd-resolve(1138)
        ├─systemd-userdbd(1139)─┬─systemd-userwor(12707)
        │                     ├─systemd-userwor(12714)
        │                     └─systemd-userwor(12715)
        ├─auditd(1140)───{auditd}(1141)
        ├─dbus-broker-lau(1164)───dbus-broker(1165)
        ├─avahi-daemon(1166)───avahi-daemon(1196)
        ├─bluetoothd(1167)

Každému procesu je v systému přiděleno číslo. Proces ID číslo 1 se přiřadí úplně prvnímu procesu spuštěnému během procesu bootování a každý následující proces po PID 1 je jeho potomkem. Proces PID 1 je inicializace , což je ve většině novějších verzí Linuxu pouze symbolický odkaz na systemd program.

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

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

Procesy v systému Linux můžete ukončit pomocí kill   příkaz. Navzdory názvu je to kill příkaz a sadu dalších, jako je pkillkill byl napsán/navržen tak, aby posílal SIGNÁLY do jednoho nebo více procesů. Pokud není specifikováno, výchozí SIGNÁL, který vysílá, je signál SIGTERM pro ukončení procesu.

Když nadřazený proces zemře nebo je zabit a jeho podřízený proces nenásleduje po zániku jeho rodiče, nazýváme tento proces osiřelý proces .

Jak zabít proces zombie

Zombie procesy na druhou stranu zabít nelze! Proč se můžete ptát? No, protože už jsou mrtví!

Každý podřízený proces, když je ukončen, se stane zombie procesem a poté ho odstraní rodič. Když proces ukončí svou existenci a uvolní prostředky, které použil, jeho název je stále v tabulce procesů operačního systému. Úlohou nadřazeného procesu je pak odstranit jeho název z tabulky procesů. Když to selže, máme proces zombie, který už ve skutečnosti není proces, ale pouze záznam v tabulce procesů operačního systému.

To je důvod, proč se pokoušíte o kill příkaz i s -9 Možnost (SIGKILL) na zaniklém (zombie) procesu nefunguje, protože není co zabít.

Chcete-li tedy zabít zombie proces, jako když chcete odstranit jeho jméno ze seznamu procesů (tabulky procesů), musíte zabít jeho rodiče. Pokud je například PID 5878 zombie proces a jeho rodič je PID 4809, pak pro zabití zombie (5878) ukončíte nadřazený proces (4809):

$ sudo kill -9 4809  #4809 is the parent, not the zombie

Moje poslední slovo varování před zombiemi. Buďte velmi opatrní při zabíjení rodičovských procesů. Pokud je rodič procesu PID 1 a vy ho zabijete, restartujete se!

A to bude ještě děsivější příběh!


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

  2. Jak zabít proces, jehož rodič je init?

  3. Jak zabít proces běžící na konkrétním portu v Linuxu?

  1. Linux:Najděte a zabijte zombie procesy

  2. Jak zabít proces běžící na konkrétním portu v Linuxu?

  3. Jak zabít zombie proces

  1. Jak nainstalovat vtop na Linux

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

  3. Jak pozastavit/obnovit proces v Linuxu