158 votos

¿Cómo uso el comando de Terminal para apagar, reiniciar y hibernar mi Mac?

Estoy cada vez más interesado en utilizar Terminal como una forma alternativa de abordar soluciones en mi Mac. He visto esta pregunta titulada "¿Hay una mejor manera de apagar/reiniciar OSX?".

Por lo tanto, me gustaría saber:

¿Cómo apagar, reiniciar y poner en reposo mi Mac utilizando exclusivamente el comando Terminal?

0 votos

Reinicio para reiniciar también funciona.

187voto

yoliho Puntos 340

El comando que buscas es shutdown. Esto informa a todos los usuarios que la máquina va a ser apagada y le indica a todas las aplicaciones que cierren archivos, etc.

El comando toma como parámetros -h, -r o -s para apagar, reiniciar o poner en reposo la Mac.

El comando debe ejecutarse como root, por lo que necesitas usar sudo.

Por ejemplo, para reiniciar la máquina inmediatamente

sudo shutdown -r now

Por ejemplo, para apagar la máquina en 60 minutos

sudo shutdown -h +60

De los comentarios surgen dos cosas a tener en cuenta

El funcionamiento del apagado es enviando una señal sigterm a todos los procesos, los cuales deberían encargarse de guardar los archivos abiertos, etc. Si no salen, entonces se les enviará una señal SIGKILL que los obliga a morir sin posibilidad de respuesta. Las señales no se envían a través de la cola de mensajes de teclado normal, por lo que las aplicaciones deben ocuparse de esto por separado al código que se llama desde la opción de salir en el menú. Una buena aplicación debería llamar al código común desde ambos.

Esta otra respuesta muestra cómo apagar como si seleccionaras las opciones del menú. Pero ten en cuenta que las aplicaciones pueden cancelar este apagado

2 votos

Quizás algo no relacionado con la pregunta y esta respuesta, pero vale la pena mencionar que también me resulta útil para bloquear mi Mac desde la Terminal, algo así como presionar Winkey+L en Windows: /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend. Lo tengo alias en un archivo que se carga en mi .bash_profile de la siguiente manera: alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'

0 votos

¿Realmente "cierra todos los archivos de las aplicaciones, etc."? ¿Pensé que simplemente lo mataría todo? ¿La página del manual es de BSD de 1998, ¿ha actualizado Apple el comando para comunicarse bien con el software de macOS? Útil si las cosas están colgadas, pero si el sistema funciona bien, parece que sería más "educado" decirle al proceso loginwindow que haga el trabajo sucio.

0 votos

@j-beda Ver el documento de Apple developer.apple.com/legacy/library/documentation/Darwin/… - Primero envía un SIGTERM con el que las aplicaciones deberían lidiar antes de recibir un SIGKILL. Ver la otra respuesta para hacerlo a través de la ventana/GUI de inicio. En realidad, ¿cómo haría la ventana de inicio la tarea?

120voto

Apagar sin mostrar un cuadro de diálogo de confirmación:

osascript -e 'tell app "System Events" to shut down'

Apagar después de mostrar un cuadro de diálogo de confirmación:

osascript -e 'tell app "loginwindow" to «event aevtrsdn»'

Reiniciar sin mostrar un cuadro de diálogo de confirmación:

osascript -e 'tell app "System Events" to restart'

Reiniciar después de mostrar un cuadro de diálogo de confirmación:

osascript -e 'tell app "loginwindow" to «event aevtrrst»'

Cerrar sesión sin mostrar un cuadro de diálogo de confirmación:

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

Cerrar sesión después de mostrar un cuadro de diálogo de confirmación:

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

Ir a dormir (pmset):

pmset sleepnow

Ir a dormir (AppleScript):

osascript -e 'tell app "System Events" to sleep'

Poner las pantallas en reposo (10.9 y posteriores):

pmset displaysleepnow

Los códigos de cuatro letras para los eventos de Apple están listados en AERegistry.h.

Todos los comandos de System Events anteriores envían eventos de Apple al proceso loginwindow. loginwindow recibe los mismos eventos de Apple mencionados anteriormente cuando cierras sesión, reinicias, apagas o pones la Mac a dormir de forma normal. Consulta Preguntas y respuestas técnicas QA1134: La causación programática de un reinicio, apagado y/o cierre de sesión.

Según man shutdown, shutdown -h now y shutdown -r now envían a los procesos una señal TERM seguida de una señal KILL.

Según la Guía de programación de demonios y servicios, cuando le indicas a loginwindow que cierre sesión, los procesos que admiten la terminación repentina reciben una señal KILL, y los procesos que no admiten la terminación repentina son finalizados de diferentes maneras: las aplicaciones de Cocoa reciben el método de delegado applicationShouldTerminate:, las aplicaciones en primer plano reciben el evento de Apple kAEQuitApplication, las aplicaciones en segundo plano reciben el evento de Apple kAEQuitApplication seguido por una señal KILL, y los demonios reciben una señal TERM seguida por una señal KILL después de unos segundos.

0 votos

¿Qué tal si se apaga con AppleScript después de un tiempo de espera? Supongo que sleep 60 && osascript -e 'tell app "System Events" to shut down' podría funcionar, pero ¿cómo hacerlo solo con AppleScript?

0 votos

Entonces intenté usar la técnica de AppleScript para hacer un reinicio suave programado. El problema es que, si hay usuarios de intercambio de archivos conectados a la máquina, no se reiniciará. Muestra un mensaje de "hay usuarios conectados...", que NO tiene un temporizador incorporado. Entonces, ¿hay alguna forma de desconectar a todos los usuarios de intercambio de archivos primero, antes de ejecutar este comando?

-3voto

Yukhy Puntos 23

Apagar inmediatamente:

sudo shutdown -h now

Si prefieres agregar un retraso al apagado, puedes utilizar la siguiente sintaxis de comando en su lugar:

sudo shutdown -h +30

(El parámetro -h establece el tiempo para apagar, donde (+)30 minutos para detener el sistema)

-13voto

holbein Puntos 1

También útil, para cerrar la sesión desde el símbolo del sistema en la terminal, escriba 'exit':

[host:~user]$ exit

15 votos

¿De qué manera se apaga, reinicia o pone en reposo la Mac?

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