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.
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
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.
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.
Ce qui suit tue tous les processus créés par cet utilisateur:
kill -9 -1
Qu'en est-il de l'itération sur le système de fichiers virtuel/proc? http://linux.die.net/man/5/proc ?