¿Cómo eliminar el retraso de 10 minutos para un apagado programado?

0

Cuando configuro una Mac que se usa como pantalla pública (recordatorio: se enciende y apaga automáticamente durante el horario comercial) para apagarla a una hora específica (a través de Energy Saver), macOS contará una cuenta regresiva de 60 segundos y luego agregará una cuenta regresiva adicional. de 10 minutos.

¿Qué puedo cambiar en macOS para que no haya ninguna cuenta atrás para un apagado programado?

Encontré artículos en la Red que detallaban los comandos para Terminal, pero no administran la cuenta regresiva de 60 segundos / 10 minutos.

Alguien me dijo: "usa este AppleScript

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

y eso funcionará.

Aquí está el problema. Pegue esa línea de código que me dio en AppleScript Editor, luego la guardo como una aplicación AppleScript (hacerlo en Automator y crear una aplicación es lo mismo). Luego voy al calendario de Apple, creo un evento que se repite diariamente y asocio una acción para abrir esa aplicación.

Ahora, aquí está la trampa: Si hago doble clic en la aplicación, el Mac se apaga de inmediato. Multa. Pero eso no es lo que necesito. Si el evento se activa en el Calendario, cada vez que abre la aplicación, dice que esta es la primera vez que se ejecuta esta aplicación y si está bien, abrirla. A pesar de que hago clic en ABRIR (o SÍ, no lo recuerdo), esta advertencia aparece cada vez que se lanza la aplicación. Parece que el proceso de apagado ocurre tan rápido que macOS no tiene tiempo para ponerlo en el registro de aplicaciones autorizadas.

Entonces, la pregunta es: ¿cómo lanzar esa línea de código, sin comprar el PowerManager de $ 50, en un momento específico? Porque cuando esa línea de código no se ejecuta desde una aplicación AppleScript o Automator, funciona (no hay advertencia sobre la aplicación).

Gracias.

    
pregunta BranislavMilic 13.02.2018 - 18:44

1 respuesta

3

No necesitas aplicaciones pagas para hacer esto, ya que es muy sencillo usar Bash (el shell predeterminado en la Terminal).

Puede hacer que la computadora se apague emitiendo el comando en la Terminal

$ sudo shutdown -h now

Si lo intentas, apagará tu Mac inmediatamente.

Lo que hace cada parte

  • sudo = ejecutar como usuario root
  • shutdown = el comando para apagar el sistema
  • -h = detiene el sistema
  • now = inmediatamente

Entonces, si desea apagar la computadora dentro de 5 minutos, su comando sería:

$ sudo shutdown -h +5

Incluso puedes programarlo para un reinicio ( -r en lugar de -h ) en un momento determinado (11:00 pm todas las noches)

$ sudo shutdown -r -h 23:00

Si bien ese comando solo hace lo que quiere, está limitado debido a sudo ; Tendrá que introducir su contraseña cuando se ejecute. Esto significa que tendrá que estar presente en cada máquina cada vez que quiera ejecutar el comando (todos los días), por lo que necesitamos algo que ejecute el comando como root para que sea automático.

Escribiendo un script de Bash

El script para esto es bastante simple; es una sola línea que llama al comando de apagado:

#!/bin/bash

/sbin/shutdown -h now

Llámelo auto_shutdown.sh y guárdelo en una ubicación conveniente. Hazlo ejecutable emitiendo el comando:

$ sudo chmod +x auto_shutdown.sh

Esto establecerá el bit de ejecución y permitirá que el sistema lo procese como un programa. Ahora que tiene su script, solo necesita algo para ejecutar ese script en un momento predeterminado.

Usar Launchd para programar su trabajo

launchd es el marco de gestión de servicios que inicia / detiene / reinicia los procesos, servicios, daemons, etc. Para configurar un trabajo para comenzar con launchd necesita dos elementos:

  • tipo de trabajo a ejecutar; ejecutarse como usuario para un usuario, como usuario para todos los usuarios, o un trabajo ejecutado por el sistema como root . Queremos el último.
  • plist (archivo XML) que describe el trabajo. Los elementos clave en los que necesita concentrarse ahora son el ProgramArguments que llama al script y el CalendarInterval que especifica cuándo deben ejecutarse los trabajos. Para este ejemplo, llame a su plist user.com.autoShutdown.plist (no hay otra razón para esa convención de nomenclatura más que sigue las convenciones de Apple).

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.user.autoShutdown</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Path_to_Script/auto_shutdown.sh</string>
        </array>
        <key>StartCalendarInterval</key>
        <array>
        <dict>
            <key>Hour</key>
            <integer>21</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    
    </dict>
    

Este plist está configurado para ejecutar el script auto_shutdown.sh todos los días a las 11:30 p.m.

Ya que queremos ejecutar esto como root, copie el plist al directorio /Library/LaunchDaemons .

$ sudo cp com.user.autoShutdown.plist /Library/LaunchDaemons

Finalmente, cargue el trabajo en launchd :

$ sudo launchctl load com.user.autoShutdown.plist

Eso es todo. Todos los días a las 11:30, el sistema se apagará automáticamente.

Replique en todas sus máquinas

Copie el script y el plist a cada máquina y cargue el trabajo en launchd . Acaba de configurar el tiempo de apagado para todas las máquinas y no requirió servicios de terceros ($$$).

Puede encontrar información sobre todos los comandos enumerados aquí buscando en su página de manual. Escriba man <command> para el comando que le interesa.

respondido por el Allan 13.02.2018 - 21:36

Lea otras preguntas en las etiquetas