Utilisez pkill -U UID
ou pkill -u UID
ou nom d'utilisateur au lieu d'UID. Parfois skill -u USERNAME
peut fonctionner, un autre outil est killall -u USERNAME
.
Skill était spécifique à Linux et est maintenant obsolète, et pkill est plus portable (Linux, Solaris, BSD).
pkill autorise les UID numériques et symboliques, effectifs et réels http://man7.org/linux/man-pages/man1/pkill.1.html
pkill - ... signale les processus basés sur le nom et d'autres attributs
-u, --euid euid,... Only match processes whose effective user ID is listed. Either the numerical or symbolical value may be used. -U, --uid uid,... Only match processes whose real user ID is listed. Either the numerical or symbolical value may be used.
La page de manuel de skill indique qu'il est uniquement permis d'utiliser un nom d'utilisateur, pas un identifiant d'utilisateur :http://man7.org/linux/man-pages/man1/skill.1.html
compétence, snice ... Ces outils sont obsolètes et non portables. La syntaxe de la commande est mal définie. Envisagez d'utiliser le killall, pkill
-u, --user user The next expression is a username.
killall n'est pas marqué comme obsolète sous Linux, mais il ne fonctionnera pas non plus avec l'UID numérique ; seul nom d'utilisateur :http://man7.org/linux/man-pages/man1/killall.1.html
killall - tue les processus par nom
-u, --user Kill only processes the specified user owns. Command names are optional.
Je pense que tout utilitaire utilisé pour trouver un processus dans le style Linux/Solaris /proc (procfs) utilisera la liste complète des processus (en faisant un readdir de /proc
). Je pense qu'ils vont parcourir /proc
sous-dossiers numériques et vérifiez la correspondance de chaque processus trouvé.
Pour obtenir la liste des utilisateurs, utilisez getpwent
(il obtiendra un utilisateur par appel).
Les outils skill (procps &procps-ng) et killall (psmisc) utilisent tous deux getpwnam
appel à la bibliothèque pour analyser l'argument de -u
option, et seul le nom d'utilisateur sera analysé. pkill
(procps &procps-ng) utilise à la fois atol et getpwnam pour analyser -u
/-U
argument et autoriser les spécificateurs d'utilisateur numériques et textuels.
Si vous transmettez -1 comme argument d'ID de processus au kill
commande shell ou le kill
fonction C, alors le signal est envoyé à tous les processus qu'il peut atteindre, ce qui signifie en pratique tous les processus de l'utilisateur exécutant le kill
commande ou appel système.
su -c 'kill -TERM -1' bob
En C (vérification d'erreur omise) :
if (fork() == 0) {
setuid(uid);
signal(SIGTERM, SIG_DFL);
kill(-1, SIGTERM);
}
Si la fonction pkill n'est pas disponible sur votre distribution UNIX/Linux, vous pouvez exécuter la commande suivante en tant qu'utilisateur root :
ps -ef | grep username | grep -v grep | awk '{print $2}' | xargs kill
où username est l'utilisateur dont vous souhaitez supprimer les processus