¿Cómo puedo obligar a otros usuarios a cerrar sesión?

14

¿Hay una manera simple de forzar a otro usuario a salir de un cuadro de Linux, mientras estoy conectado como root? Entiendo que podría determinar qué tipo de sesión tienen abierta y eliminar el pid, pero creo que debe haber un comando para hacer esto que no conozco.

¿Algunas ideas?

Brent
fuente

Respuestas:

15

Puedes simplemente slay(1)él. :-)

David Schmitt
fuente
¡Decir ah! Ordenado. Nunca había oído hablar de este comando antes. ¿Está disponible en todos los sistemas? Claro que parece que supera matar su proceso de caparazón.
Jonathon Watney
Probablemente esté empaquetado para todas las distribuciones, pero si necesita algo que funcione en todas partes, la habilidad de los procps --- como señala Mihai --- podría ser una mejor opción. Sin embargo, tiene menos estilo ;-)
David Schmitt
1
openSuse 11.4 - slay: comando no encontrado :( :(
usr-local-ΕΨΗΕΛΩΝ
No instalado en los hosts Ubuntu 12.04 o RHEL 3 que tengo disponibles actualmente, tengo el skillcomando detallado por Mihai Limbăşan. YMMV
David
Instálelo desde universe: packages.ubuntu.com/search?keywords=slay
David Schmitt
10

Puede eliminar todos los procesos de un usuario a través de skill. Ejemplo:

  • skill -TERM -u username

enviará SIGTERM a todos usernamelos procesos de. Para matarlos para siempre (a través de SIGKILL) use -KILL en lugar de -TERM; tenga en cuenta, sin embargo, que probablemente hará que pierdan datos de esa manera. Es muy efectivo, fíjate ...

skilles parte del procpspaquete que está instalado por todas las distribuciones por defecto.

Mihai Limbăşan
fuente
Para otros que quieran hacer esto para todas las sesiones de usuarios remotos, la bandera -v ( -v pts/*), que es de la página del manual, puede ser útil.
David
2

El pkilly killallse prefieren sobre skill. Esto es de la skillpágina del manual:

Estas herramientas son probablemente obsoletas e inportables. La sintaxis del comando está mal definida. Considere el uso de los killall, pkilly pgrepcomandos en su lugar.

Esto debería funcionar:

sudo pkill -KILL -u [user]

o

sudo killall -u [user]
David
fuente
0

Otra forma fácil de hacerlo es ejecutar kill -1 <pid>donde pid es el número de ID de proceso de la sesión SSH.

Al ejecutar este comando, puede ver todos los árboles de proceso sshd , al eliminar el ID del proceso principal, efectivamente eliminará la sesión de usuario asociada con él:

$ ptree -p

Busque sshd y luego ejecute:

$ kill -1 39383

Donde 39383 es un ejemplo de un número de identificación de proceso arbitrario.

Si barry
fuente