¿Eliminar todos los procesos de los usuarios en Ubuntu?


20

¿Cómo matar todo el proceso de un usuario?

Cuando realizo ps aux, obtengo una lista de procesos con varios usuarios, ¡y quiero eliminar todos los procesos de usuarios, name1por ejemplo! ¿Qué es un comando para hacer eso en Ubuntu?



1
Si los usuarios son personas reales, probablemente no sea una buena idea. También creo que quieres matar procesos para ahorrar tiempo. Esta es una muy mala idea. Por ejemplo, los servicios en Ubuntu se pueden dejar de usar sudo service the-service-name stop. Los procesos de matanza pueden dejar archivos, bases de datos, etc.
corruptos

Respuestas:


27

En este caso, es bastante simple, puede usarlo killallpara matar o enviar cualquier otra señal a un montón de procesos a la vez. Una de las opciones de "filtrado" es el propietario:killall --user name1


No estaba al tanto de la --userdiscusión, gracias!
jmtd

44
Cabe señalar que, killallpor ejemplo, Solaris Unix mata todos los procesos en ejecución que puede! Ver: en.wikipedia.org/wiki/Killall
donothings exitosamente

Esto esencialmente cerró la sesión en Ubuntu 18.
Manohar Reddy Poreddy

14

Agregar otra opción porque nadie lo ha mencionado, y no me gusta killall(usarlo en solaris puede causar un desastre).

pkill es más portátil

pkill -u username

No encuentro killallen Ubuntu, pero pkillya está instalado.
david.perez

2

Identifique al usuario, luego killall -user <username>

Tendrán un proceso bash (o similar) asociado con su sesión de inicio de sesión que matará su sesión.

Para obtener una visión general potencialmente mejor de lo que está haciendo un usuario, intente pstree <username>


necesita dos guiones antes del usuario, por ejemplo--user
jmtd

1

Instalar slay:

aptitud instalar slay

Entonces emitir slay some-user.

Tenga en cuenta que si elimina cosas para usuarios para los que no conoce el propósito, puede dejar su máquina inutilizable (hasta que reinicie).

Si realmente no quieres instalar slay:

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill

(espera un poco)

ps -e -o user,pid | grep '^some-user ' | awk '{ print $2 }' | xargs kill -9

1
Por cierto, awkpuede grep algo en sí mismo. No es necesario hacerlo grep smth | awk, porque puede usarlo en su awk '/smth/{...}'lugar.
prisa el

Aquí hay una pequeña y útil función para ti. killuser () { ps faux| awk -v user=$1 '$1==user{ system("kill -9 " $2) }' ;};
rcjohnson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.