web-dev-qa-db-fra.com

Tuer tous les processus pour un utilisateur donné

Existe-t-il un moyen fiable de tuer tous les processus d'un utilisateur donné? kill(-1, SIGKILL) comme cet utilisateur fonctionnera, à moins qu'un processus non fiable de cet utilisateur ne tue d'abord le processus de mise à mort. Le mieux que je puisse trouver jusqu'à présent est de parcourir system("ps -u") pour cet utilisateur et de tuer les processus de cette façon, mais cela semble vraiment fastidieux et inefficace.

EDIT: Pour clarifier, je demande spécifiquement une solution compatible avec POSIX. Pour une raison quelconque, je pensais que le marquage de la question posix mettrait cela dans le titre.

68
Shea Levy

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
95
uselpa

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 pense même pas à y mettre des racines!

pkill -9 -u `id -u username`

Remarque: si vous voulez être Nice, supprimez -9, mais cela ne tuerait pas tous les types de processus.

41
sorin

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

Avec -o pid= l'en-tête ps est supprimée et la sortie est uniquement la liste des pid. Autant que je sache, shell Debian est compatible POSIX.

6
jgrocha

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

kill  -9  -1
5
Vipin Nagar

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

2
Shmil The Cat