htop me permite ver muy bien los árboles de procesos dentro del shell. Puedo matar procesos presionando F9 (KILL)
y luego seleccionando qué señal (por ejemplo 15 SIGTERM
) quiero enviar a un trabajo para matar.
Sin embargo, esto solo me permite matar un proceso a la vez. ¿Hay alguna manera de matar un árbol completo de procesos usando htop
?
Podrías secuestrar
htop
els
comando. Enhtop
, presionandos
invocastrace -p <the-pid-of-the-selected-process>
.Entonces, lo que podría hacer es crear un
strace
comando que contenga algo como:Y colóquelo en algún directorio como
~/.htop-hijack
, y llame a htop como:Luego, presionar
s
invocaría ese comando en lugar destrace
(debe presionar Esc para volver a la pantalla principal después).fuente
Ha habido una característica para esto durante mucho tiempo, pero faltaba en el manual hasta 2018: presione la
c
tecla para seleccionar el proceso actualmente resaltado, así como todos sus elementos secundarios. Luego, las operaciones que se aplican a los procesos seleccionados (como matar con lak
tecla) se aplican al proceso y a sus hijos.Sin embargo, esto no es atómico. Si se generan nuevos hijos entre el momento en que presiona
c
y el momento en que el kernel ha eliminado todos los procesos, no se eliminarán y lo más probable es que se vuelvan a unir al proceso init. Esto se debe a que htop realiza un bucle en los procesos seleccionados y los mata uno por uno.Hace un tiempo propuse un parche para agregar una función de destrucción de grupos atómicos a htop, pero la implementación no fue lo suficientemente consensuada para que se fusionara. Con él, es posible matar atómicamente todo un grupo de procesos desde htop. Eso no es exactamente lo mismo que matar un árbol completo, pero AFAIK, el núcleo no proporciona ninguna forma de matar un árbol arbitrario atómicamente.
fuente