Vždy velmi váhám se spuštěním kill -9
, ale vidím, že ostatní administrátoři to dělají téměř běžně.
Domnívám se, že pravděpodobně existuje rozumná střední cesta, takže:
- Kdy a proč by měl
kill -9
být použit? Kdy a proč ne? - Co byste měli vyzkoušet, než to uděláte?
- Jaký druh ladění „zaseknutého“ procesu by mohl způsobit další problémy?
Přijatá odpověď:
Obecně byste měli použít 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 zasekl proces. (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é).