GNU/Linux >> Znalost Linux >  >> Linux

Kdy bych neměl zabít -9 proces?

Obecně byste měli používat kill (zkratka pro kill -s TERM , nebo na většině systémů kill -15 ) před kill -9 (kill -s KILL ), aby měl cílový proces možnost po sobě uklidit. (Procesy nemohou zachytit ani ignorovat SIGKILL , ale mohou a často chytí SIGTERM .) Pokud procesu nedáte šanci dokončit to, co dělá, a vyčistit, může zanechat poškozené soubory (nebo jiný stav), kterému po restartu nebude rozumět.

strace /truss , ltrace a gdb jsou obecně dobré nápady, jak zjistit, proč se zaseknutý proces zasekl. (truss -u na Solaris je zvláště užitečné; Nacházím ltrace příliš často předkládá argumenty volání knihovny v nepoužitelném formátu.) Solaris má také užitečné /proc -založené nástroje, z nichž některé byly portovány na Linux. (pstack je často užitečné).


Randal Schwartz často publikoval na seznamech „Neužitečné použití (x)“. Jeden takový příspěvek byl asi kill -9 . Obsahuje důvody a recept, který je třeba dodržovat. Zde je rekonstruovaná verze (citovaná níže).

(Cituji ohavnost)

Ne ne ne. Nepoužívejte kill -9.

Nedává procesu šanci čistě:

1) vypněte připojení zásuvek

2) vyčistit dočasné soubory

3) informovat své děti, že odchází

4) resetujte jeho vlastnosti terminálu

a tak dále a tak dále a tak dále.

Obecně odešlete 15 a počkejte sekundu nebo dvě, a pokud to nefunguje, pošlete 2, a pokud to nefunguje, pošlete 1. Pokud ne, ODSTRANĚTE BINÁRKU, protože se program chová špatně!

Nepoužívejte kill -9. Nevytahujte kombajn jen proto, abyste uklidili květináč.

Jen další zbytečné použití Usenetu,

(.podpis)


Vždy by mělo být v pořádku provést kill -9 , stejně jako by mělo být vždy v pořádku vypnout vytažením napájecího kabelu. Může to být antisociální a ponechává to nějaké zotavení, ale mělo by to fungovat a je to mocný nástroj pro netrpělivé.

Říkám to jako někdo, kdo nejprve zkusí prosté zabití (15), protože to dává programu šanci provést nějaké vyčištění - třeba jen zapsat do protokolu "ukončení na sig 15". Ale nepřijmu žádnou stížnost na špatné chování při zabití -9.

Důvod:spousta zákazníků dělá věci, které programátoři preferují, než ne. Testování náhodného zabití -9 je dobrý a spravedlivý testovací scénář, a pokud to váš systém nezvládne, váš systém je nefunkční.


Linux
  1. Co když ‚kill -9‘ nefunguje?

  2. Linux – Kdy nemám zabít -9 A proces?

  3. Proč není Sigint propagován do podřízeného procesu, když je odeslán jeho nadřazenému procesu?

  1. .bash_profile není při spuštění Su?

  2. Procesní potomci?

  3. kill:příkaz nenalezen

  1. Jak zabít proces zombie na Linuxu

  2. Je možné vynutit určitý výstupní kód při použití kill k zastavení procesu?

  3. Procesy zabíjení v Raspbianu