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í.