3 votes

Kill process tree using terminal ?

Existe-t-il un moyen de tuer un arbre de processus en utilisant le terminal ?

Par tuer un arbre de processus, j'entends tuer tous les descendants d'un processus en même temps que le processus lui-même.

J'ai marqué cette question htop parce que j'utilise beaucoup cet utilitaire ces jours-ci et que ce serait cool s'il y avait un moyen facile de tuer un arbre de processus à l'intérieur de htop (quelque chose de mieux que la simple sélection de tous les processus dans le sous-arbre).

4voto

Jason Hughes Points 11

Cela devrait vous aider !

pkill -TERM -P `PID`

3voto

Arkanosis Points 131

Il existe une fonction dans htop pour cela depuis longtemps, mais elle était absente du manuel jusqu'en 2018 : appuyez sur la touche c pour sélectionner le processus actuellement en surbrillance ainsi que tous ses enfants. Ensuite, les opérations qui s'appliquent aux processus sélectionnés (comme la mise à mort à l'aide de la touche k ) s'appliquent au processus et à ses enfants.

Ce n'est pas atomique, cependant. Si de nouveaux enfants sont créés entre le moment où vous appuyez sur c et au moment où le noyau a tué tous les processus, ceux-ci ne seront pas tués et finiront très probablement par être rattachés au processus init. C'est parce que htop fait une boucle sur les processus sélectionnés et les tue un par un.

J'ai a proposé un correctif pour ajouter une fonctionnalité de destruction de groupe atomique à htop il y a quelque temps, mais l'implémentation n'était pas assez consensuelle pour qu'elle soit fusionnée. Avec cette fonctionnalité, il est possible de tuer un groupe de processus entier de manière atomique à partir de htop. Ce n'est pas exactement la même chose que de tuer un arbre entier, mais AFAIK, le noyau ne fournit aucun moyen de tuer un arbre arbitraire de manière atomique.

1voto

heemayl Points 85741

Oui, cela peut être fait en utilisant tuer je ne suis pas sûr htop . Par exemple, si le PGID des processus 65, 78 et 90 est 35, vous pouvez les tuer tous (de force) par la commande suivante :

sudo kill -9 -35

c'est-à-dire

sudo kill -9 -<PGID>

1voto

Utilisation htop vous pouvez utiliser F5 pour afficher les arbres de processus.

Si vous sélectionnez le processus au sommet de l'arborescence que vous voulez tuer, puis appuyez sur F9 suivi de Enter cela fermera le processus et toute l'arborescence du processus en une seule fois.

Dans la capture d'écran ci-dessous, cette action entraînerait la fermeture de Chrome et de tous les sous-processus.

enter image description here

-1voto

Robin Points 1

J'ai essayé ceci et cela a fonctionné pour moi

  1. Obtenir l'identifiant du processus PID par top ou Htop (avec la bande Htop F4 écrire-le-nom-du-processus alors F5 pour obtenir un arbre)

  2. utilisez cette commande, elle a fonctionné pour moi

    kill -TERM pid

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X