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 № 1Juste (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