/ / Tuer tous les processus pour un utilisateur donné - posix

Tuer tous les processus pour un utilisateur donné - posix

Existe-t-il un moyen fiable de supprimer tous les processus d'un utilisateur donné? kill(-1, SIGKILL) en tant que cet utilisateur fonctionnera, sauf si un processus non autorisé de cet utilisateur tue le processus de mise à mort en premier. Le mieux que je puisse trouver jusqu’à présent est de parcourir en boucle system("ps -u") pour cet utilisateur et tuer les processus de cette façon, mais cela semble vraiment hacky et inefficace.

EDIT: Pour préciser, je demande spécifiquement une solution compatible POSIX. Pour une raison quelconque, j’ai pensé que marquer la question posix mettrait cela dans le titre.

Réponses:

80 pour la réponse № 1

Juste (temporairement) tué mon Macbook avec

killall -u pu -m .

où pu est mon userid. Regardez le point à la fin de la commande.

Essayez aussi

pkill -u pu

ou

ps -o pid -u pu | xargs kill -1

34 pour la réponse № 2

Voici un one-liner qui fait cela, il suffit de remplacer nom d'utilisateur par le nom d'utilisateur pour lequel vous voulez tuer des choses. Ne pensez même pas à y mettre des racines!

pkill -9 -u `id -u username`

Remarque: si vous voulez être sympa, supprimez -9, mais cela ne supprimera pas tous les processus.


5 pour la réponse № 3

Sur Debian LINUX, j'utilise: ps -o pid= -u username | xargs sudo kill -9.

Avec -o pid= l'en-tête ps est supprimé et la sortie est uniquement la liste pid. Pour autant que je sache, Shell Debian est conforme à POSIX.


1 pour la réponse № 4

Qu'en est-il de l'itération sur le système de fichiers virtuel / proc? http://linux.die.net/man/5/proc ?


1 pour la réponse № 5

Ce qui suit tue tous les processus créés par cet utilisateur:

kill  -9  -1