Quiero cerrar la sesión de mi Mac OS X desde la línea de comandos. Mi versión de OS X es 10.9. Intenté command pkill -KILL -u uid
, pero este comando no funcionó. ¿Hay algún comando que se pueda usar para cerrar la sesión de un usuario del sistema usando solo la línea de comando, no AppleScript ?
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 del usuario de destino o reemplace la subcapa completa con el uid del usuario. Esto le dice a launchctl que elimine la sesión de inicio de sesión de los usuarios (gui se refiere específicamente a la sesión de inicio de sesión temporal del usuario, el usuario especifica los procesos en segundo plano de los usuarios).
Puede cerrar la sesión sin el sudo
para probar esto.
Tenga en cuenta que esto SÓLO funcionará en macOS 10.11.x o posterior (consulte launchctl help
para obtener más información)
Para cerrar la sesión únicamente desde la terminal (o desde una sesión ssh remota), simplemente elimine el proceso de la ventana de inicio de sesión:
sudo pkill loginwindow
Podría volverse elegante y especificar el usuario si varios usuarios tienen un proceso de ventana de inicio de sesión, pero esta es una forma sencilla de una sola vez, no es una forma rápida de finalizar la sesión gráfica de un usuario.
Esto me ha funcionado en el pasado:
Cerrar sesión (con confirmación)
osascript -e 'tell app "System Events" to log out'
Cerrar 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 esta manera, cualquier aplicación en ejecución se notará y podrá finalizar de manera segura.
Una buena utilidad para agregar a su Terminal es el comando "cerrar sesión", que se usa como:
logout UserName
Aquí el cómo:
Edite su .bash_profile
nano ~/.bash_profile
Añade esta línea:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Guarde el archivo presionandoctrl+x
reinicia la terminal
Estás listo para ir ;)
logout() {sudo launchctl bootout user/$(id -u "$1")}
Recibo el siguiente error cuando intento ejecutar. -bash: logout: FIRSTNAME: numeric argument required
Estoy confundido. El comando funciona bien cuando se usa directamente en la terminal, pero por alguna razón, esto como un perfil de bash o un script de bash sigue arrojando este error. Me pregunto si tiene que ver con el hecho de que el nombre de usuario con el que estoy tratando de probar tiene un espacio entre Nombre y Apellido. Parece que el Apellido se interpreta como un argumento, pero la entrada en .bash_profile tiene comillas dobles.Si tienes varios usuarios...
Encuentre el ID del proceso con:
ps aux|grep login
Luego elimine ese proceso y cerrará la sesión. Pero quedan muchos procesos.
Consulte con pstree
para saber qué proceso terminar.
Esto hace el truco para mí.
sudo -s
Para obtener algunos privilegios de root y el indicador #, elimine los procesos.
killall -vu username -HUP
Y si no todo se ha ido. ¡Nuke em! Advertencia obligatoria: matar cosas como root no tiene deshacer y no "¿está seguro de que desea interrumpir este proceso sin guardar sus archivos, incluidas las bases de datos críticas del sistema que pueden hacer que la máquina no se pueda iniciar en raras ocasiones?" escriba advertencias.
killall -vu username -9
Una forma extrema de expulsar la sesión del usuario es forzar un reinicio:
sudo shutdown -r now
Esto funciona bien si está intentando actualizar el sistema.
Esto hace el truco para mí
sudo-su usuario
y para la raíz
sudo-su raíz
si ha iniciado sesión con ssh en una computadora remota, puede cerrar la sesión simplemente escribiendo 'salir':
[host:~user]$ exit
sin ladera
prateak ojha