Cierre la sesión de otro usuario sin cambiar primero a ese usuario

28

Mi esposa usa cuentas separadas y cambio rápido de usuario en un MBP con 10.6. A veces quiero desconectarla para liberar algo de RAM, pero me gustaría evitar iniciar sesión como ella, cerrar sesión y luego volver a iniciar sesión como yo.

He visto una solución terminal ... ¿hay una mejor manera? ¡Gracias!

Richard Herron
fuente
55
Necesita definir mejor "¿hay una mejor manera?" Para mí, no mucho (en cuanto a computadora) es mejor que un terminal. Si desea una aplicación, simplemente envuelva el comando de terminal en un automatizador o una aplicación AppleScript.
2
@mankoff, buen punto! Pero este no es un foro de Arch Linux, así que supongamos que quiero una GUI / solución integrada :). Pero tienes razón, puedo escribir un script de shell.
Richard Herron
2
Aquí está el enlace a la solución de script (lo vi antes de publicarlo, pero es de 2005, por lo que supuse que a estas alturas esta característica simple debe haberse incorporado a la GUI). forums.macrumors.com/showthread.php?t=118545
Richard Herron
no conozco ninguna solución de interfaz gráfica de usuario integrada ...
Robert S Ciaccio
OK, gracias a todos! Cuando escribo un buen guión, lo volveré a publicar aquí.
Richard Herron

Respuestas:

22

Usando la Terminal, puedes matar su loginwindowproceso y cualquier programa que tenga abierto se cerrará ... ¡pero esto hará que pierda el trabajo no guardado que tiene! De hecho, esta es la razón por la que necesita iniciar sesión como ella para cerrar sesión: cuando inicia sesión como ella, todos sus programas nuevamente tienen acceso a la GUI, por lo que pueden solicitarle que confirme el cierre, guarde los cambios o tome otros acción antes de cerrar sesión.

Si está seguro de que solo tiene cosas como un navegador web, iTunes, etc. abierto, no Páginas, Word, Photoshop o cualquier otra cosa con documentos, puede probar desde el terminal:

kill `ps awwwwux | grep her_short_username | grep loginwindow | grep -v grep | awk "{ print \$2 }"`

En OSX 10.10.4: (ligera edición del último comentario):

export pn=`ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 }'`
sudo kill -9 $pn
Josh
fuente
1
Acepte la advertencia de que si no inicia sesión para ver qué está haciendo, entonces no sabe lo que podría costarle si la cierra.
Michael H.
Si, tienes razón. La mayoría de las veces es navegación web ... ¡Pero una vez no lo será! ¡Gracias!
Richard Herron el
44
Si la termina loginwindowpor la fuerza, Activity Monitor.apppodría mirar convenientemente al mismo tiempo qué otros procesos ha dejado abiertos.
Jari Keinänen
1
Si terminas ejecutando Awk de todos modos, los múltiples grepcomandos se pueden evitar fácilmente. ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 } | xargs killy vea también iki.fi/era/unix/award.html#grep
tripleee
1
solo arregle un error tipográfico en su comando actualizado, las lecturas sududeberían leerse sudo.
hoss
18

Puede usar el Monitor de actividad para cerrar la sesión de otro usuario eliminando su proceso de inicio de sesión:

  1. Ejecutar monitor de actividad
  2. En el filtro en la esquina superior derecha, escriba loginwindow
  3. Haga clic en la fila con el nombre del usuario en la columna Usuario
  4. Haga clic en Salir del proceso , luego en Forzar cierre y escriba su contraseña.

Esta es solo una versión GUI más agradable (?) De la respuesta de Josh .

Antes del paso 2, puede revisar los procesos en ejecución de otros usuarios para ver si están ejecutando alguna aplicación que pueda perder datos al cerrar sesión.

Bennett McElwee
fuente
Intenté esto y todavía veo los procesos del otro usuario ejecutándose en el Monitor de actividad. Es cierto que la cuenta aparece desconectada en el menú de cambio de usuario, pero no parece ser realmente lo mismo que cerrar sesión.
Gorb
8

Este comando es más simple que el sugerido y tendrá el resultado deseado de eliminar todos los procesos del usuario (tuve que ejecutarlo dos veces)

sudo pkill -9 -u user

Si solo desea eliminar el proceso de la ventana de inicio de sesión para ese usuario, puede hacer lo siguiente:

sudo pkill -9 -u user loginwindow

Ulukai
fuente
1
Me parece que esta es una respuesta claramente mejor y más idiomática (desde un punto de vista de administrador de sistemas Unix) que las otras.
Gregg Leventhal
2

Creo que la forma más sencilla de hacerlo es: sudo killall -9 -u wifes_name

Mempman
fuente
Usando MacOS Mojave, esta es la única solución después de probar muchas que no solo mataron el proceso de LoginWindow, sino muchos otros procesos propiedad de ese usuario. Eliminar el proceso de LoginWindow solo para ese usuario no eliminó muchos otros procesos iniciados por ese usuario. Esta solución (reemplazar con el nombre de mi esposa) eliminó todos los procesos iniciados por su inicio de sesión. Es similar a reiniciar la máquina e iniciar sesión usted mismo.
i-CONICA
-1

En mi opinión, la posible pérdida de datos supera con creces la posible ganancia de RAM.

Además, ha pasado mucho tiempo desde que Unix pudo intercambiar memoria al disco cuando un proceso estaba inactivo.

Mouviciel
fuente
2
Un problema es que cuando un usuario se desconecta, sus procesos pueden no estar inactivos. Pueden estar masticando CPU y memoria. Los juegos parecen particularmente malos a este respecto.
Bennett McElwee
2
La pregunta menciona a la esposa, pero en realidad hay un caso aún mejor: cuando tienes un hijo que ha superado su límite de tiempo para el día y solo juega juegos y hace otras cosas que no es necesario salvar. Ahora no solo tienes que iniciar sesión como niño, sino que también debes agregar tiempo solo para cerrar sesión.
Michael
@ Michael Ese es exactamente mi caso de uso. :)
Bennett McElwee