Me gustaría ejecutar algo como "sleep 3600; logout", pero el comando logout bash solo cierra el terminal actual. ¿Cómo cierro la sesión completa de Mac OS X?
macos
mac
command-line
Grzegorz Adam Hankiewicz
fuente
fuente
alias maclogout="..."
No hay una forma "agradable" de desconectar al usuario actual de la Terminal en OS X. La forma "desordenada" de hacerlo es matar el
loginwindow
proceso de ese usuario . Eliminará groseramente todos los procesos (programas) que se ejecutan con su nombre de usuario.Hacer esto es un proceso de dos pasos.
En la terminal, ejecuta esto:
Entonces corre
Donde
<pid>
es el primer número (segunda columna) de la salida del comando anterior.Use sudo kill -9 para forzar a matar el proceso que tuve que hacer para que esto funcione.
Entonces, por ejemplo, cuando si la salida al primer comando es:
Luego corría
sudo kill 41
, ingresaba mi contraseña y luego me desconectaba.Esto se puede combinar en un alias bash:
fuente
sudo killall loginwindow
? Al menos en 10.7, elloginwindow
proceso parece abrirse de nuevo inmediatamente.Sé que esta es una vieja pregunta, pero me ayudó, el comando que necesitaba en OS X 10.8 es:
La
awk
declaración es diferente ykill -9
garantiza que se muestre la solicitud de inicio de sesión.fuente
Creo que he encontrado la respuesta a cómo cerrar con gracia Mac OS X sin la espera de 2 minutos.
Me di cuenta de que mantener presionadas las teclas Mayús, Opción y Comando y presionar "q" cerrará la sesión con gracia y no preguntará "si desea cerrar sesión".
Así que codifiqué un AppleScript a través de Automator para:
fuente
Si ha iniciado sesión en un shell como el mismo usuario que ha iniciado sesión en la interfaz gráfica de usuario de la Mac, puede emitir un comando sin sudo:
launchctl reboot logout
que cierra la sesión del usuario de manera bastante efectiva; tiene la advertencia de no permitir que las aplicaciones que se están cerrando provoquen interacción mientras se cierra, sin embargo, no parece implicar que esto sea lo mismo que matarlas directamente como unkill
(SIG TERM) okill -9
(SIG KILL).fuente
Yo diría que la forma "más agradable" de publicar OS X 10.9 podría ser
launchctl gui/$(id -u <username>) bootout
La documentación posterior a OS X 10.9 para launchctl se encuentra ejecutando
launchctl help
, pero esencialmente el comando anterior derribará la sesión temporal de un usuario. La alternativalaunchctl user/$(id -u <username>) bootout
elimina la sesión permanente que ejecuta demonios de usuario mientras el usuario no está conectado.Esto se puede probar ejecutando
launchctl gui/$(id -u) bootout
, esto inmediatamente cerrará la sesión y hará que el sistema muestre la ventana de inicio de sesión (con algún retraso).fuente
sudo launchctl bootout gui/XXX
dóndeXXX
está la ID de usuario numérica (UID). Tenga en cuenta que i) elbootout
subcomando es lo primero, y ii)$(id)
devuelve mucho más que el UID.Una buena utilidad para agregar a su Terminal es el comando de cierre de sesión , que se utilizará como:
Aquí el cómo:
Edite su .bash_profile
nano ~/.bash_profile
Agrega esta línea:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Guarde el archivo presionando
ctrl+x
Reiniciar el terminal
Estás listo para ir;)
fuente