Usa pkill -U UID
o pkill -u UID
o nombre de usuario en lugar de UID. A veces skill -u USERNAME
puede funcionar, otra herramienta es killall -u USERNAME
.
Skill era específico de Linux y ahora está desactualizado, y pkill es más portátil (Linux, Solaris, BSD).
pkill permite UID numéricos y simbólicos, efectivos y reales http://man7.org/linux/man-pages/man1/pkill.1.html
pkill - ... procesos de señal basados en el nombre y otros atributos
-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 página de manual de la habilidad dice que solo se permite usar el nombre de usuario, no la identificación del usuario:http://man7.org/linux/man-pages/man1/skill.1.html
habilidad, snice... Estas herramientas son obsoletas e intratables. La sintaxis del comando está mal definida. Considere usar killall, pkill
-u, --user user
The next expression is a username.
killall no está marcado como obsoleto en Linux, pero tampoco funcionará con UID numérico; único nombre de usuario:http://man7.org/linux/man-pages/man1/killall.1.html
killall - matar procesos por nombre
-u, --user
Kill only processes the specified user owns. Command names
are optional.
Creo que cualquier utilidad utilizada para encontrar procesos en el estilo /proc (procfs) de Linux/Solaris utilizará la lista completa de procesos (haciendo algo de readdir de /proc
). Creo que iterarán sobre /proc
subcarpetas digitales y verifique que coincidan todos los procesos encontrados.
Para obtener una lista de usuarios, use getpwent
(obtendrá un usuario por llamada).
Las herramientas skill (procps y procps-ng) y killall (psmisc) usan getpwnam
llamada de biblioteca para analizar el argumento de -u
y solo se analizará el nombre de usuario. pkill
(procps &procps-ng) usa tanto atol como getpwnam para analizar -u
/-U
argumento y permitir el especificador de usuario tanto numérico como textual.
Si pasa -1 como argumento de ID de proceso a kill
comando de shell o el kill
C, luego la señal se envía a todos los procesos a los que puede llegar, lo que en la práctica significa todos los procesos del usuario que ejecuta el kill
comando o llamada al sistema.
su -c 'kill -TERM -1' bob
En C (se omite la comprobación de errores):
if (fork() == 0) {
setuid(uid);
signal(SIGTERM, SIG_DFL);
kill(-1, SIGTERM);
}
Si la función pkill no está disponible en su distribución UNIX/Linux, puede ejecutar el siguiente comando como usuario root:
ps -ef | grep username | grep -v grep | awk '{print $2}' | xargs kill
donde nombre de usuario es el usuario cuyos procesos desea eliminar