launchd
( ref ) es el método preferido para programar eventos en OS X, en lugar de usar cron
.
Aquí hay un método para poner una computadora OS X en modo de suspensión a una hora específica usando las herramientas integradas de OS X sin el aviso de alerta de anulación. La reactivación de la computadora todavía se puede manejar a través de Preferencias del sistema → Ahorro de energía → Programa.
Primero crea el siguiente script de shell en /usr/local/bin
llamado sleepnow.sh
:
#!/bin/sh
pmset sleepnow
Luego cree un archivo launchd
plist para programar un script para que se ejecute diariamente. Se vería así:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.myschoolname.sleep</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/usr/local/bin/sleepnow.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>14</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</dict>
</plist>
Probablemente querrá poner esto en /System/Library/LaunchDaemons/
con el nombre de archivo org.myschoolname.sleep.plist
. Ajuste la hora y el nombre según sea necesario.
Puede cargar el plist usando el comando sudo launchctl load -w /System/Library/LaunchDaemons/org.myschoolname.sleep.plist
o reiniciar la computadora y debe cargarse en el inicio del sistema.
Si no está familiarizado con el uso de launchd
files y las herramientas de la línea de comandos, busque la aplicación OS X de pago llamada Lingon que maneja la creación del archivo plist y la carga.
Aquí hay una buena referencia sobre pmset
, que es la herramienta de línea de comandos para administrar la configuración de energía en OS X .
Aunque pmset
se puede usar para establecer los horarios de activación y desactivación, seguirá recibiendo ese cuadro de alerta en la suspensión programada. El comando pmset sleepnow
hace que la computadora entre en modo de suspensión inmediatamente sin una alerta.