49 votos

Forma de cerrar la sesión de un usuario desde la línea de comandos en OS X 10.9

Quiero cerrar la sesión de mi Mac OS X desde la línea de comandos. Mi versión de OS X es la 10.9. He probado con el comando pkill -KILL -u uid pero este comando no ha funcionado. ¿Existe un comando que se pueda utilizar para cerrar la sesión de un usuario del sistema utilizando sólo la línea de comandos, no AppleScript ?

0 votos

¿qué es exactamente lo que no ha funcionado?

0 votos

Al ejecutar el comando pkill -KILL -u uid el sistema me muestra una pantalla gris y al esperar mucho tiempo el sistema muestra la ventana de forzar salida sin que se ejecute ninguna aplicación

66voto

Iain Henderson Puntos 11

sudo launchctl bootout gui/$(id -u <username>)
o
sudo launchctl bootout user/$(id -u <username>)

Reemplace el nombre de usuario con el nombre de usuario de destino o reemplace todo el subshell con el uid del usuario. Esto le dice a launchctl que derribe la sesión de inicio de sesión del usuario (gui se refiere específicamente a la sesión de inicio de sesión temporal del usuario, user especifica los procesos de fondo del usuario).

Puede cerrar la sesión sin el sudo para probar esto.

Tenga en cuenta que esto sólo funcionará en 10.10 o más reciente (ver launchctl help para más)

1 votos

Acabo de releer tu pregunta y siento que esto no te sirva de nada, pero saldrá en los resultados de búsqueda de google.

0 votos

¿Conoces el comando opuesto al bootout? Necesito iniciar la sesión del usuario de forma programada.

0 votos

Esto es genial. Mi Mac se atasca después de un tiempo cuando le digo que cierre la sesión, y nunca se cierra. El segundo comando fue muy persuasivo.

30voto

Oskar Puntos 1242

Para cerrar la sesión puramente desde el terminal (o desde una sesión ssh remota), basta con matar el proceso loginwindow:

sudo pkill loginwindow

Podrías ponerte elegante y especificar el usuario si varios usuarios tienen un proceso de loginwindow, pero esta es una forma fácil de un solo golpe, sin una forma de terminar la sesión gráfica de un usuario.

19voto

Esto me ha funcionado en el pasado:

Cerrar la sesión (con confirmación)

osascript -e 'tell app "System Events" to log out'

Cerrar la sesión directamente (sin confirmación)

osascript -e 'tell app "System Events" to  «event aevtrlgo»'

o

osascript -e 'tell application "loginwindow" to  «event aevtrlgo»'

De este modo, cualquier aplicación que se esté ejecutando se dará cuenta y podrá terminar de forma segura.

0 votos

Osascript -e 'tell app "System Events" to "event aevtrlgo"' showing error: a "<" cant go sfter this to .

0 votos

A mí me funciona bien. Puedes probar desde un shell script en lugar de la línea de comandos, tal vez el shell hace algunas cosas extrañas aquí.

0 votos

Supongo que el OP tiene algún otro problema y los comandos normales se están colgando de los comentarios aquí y la descripción de la pregunta.

1voto

Si tiene varios usuarios ....

Encuentre el ID del proceso con:

ps aux|grep login

Entonces mata ese proceso y cierra la sesión. Pero quedan muchos procesos.

Consulte con pstree para saber qué proceso debe terminar.

1voto

tovare Puntos 111

Esto es lo que hace el truco para mí.

sudo su

Para obtener algunos privilegios de Root y el prompt #, luego matar los procesos.

killall -vu username -HUP

Y si no se ha ido todo. ¡Las destruyes!

killall -vu username -9

1 votos

No hay necesidad de entrar en el shell Root - sólo hay que poner sudo delante de los comandos killall

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X