launchd
( ref ) è il metodo preferito per pianificare eventi in OS X, anziché utilizzare cron
.
Ecco un metodo per mettere un computer OS X in modalità di sospensione in un momento specifico utilizzando gli strumenti OS X incorporati senza il prompt di emergenza. Riattivare il computer può ancora essere gestito tramite Preferenze di Sistema → Risparmio Energia → Pianificazione.
Crea innanzitutto il seguente script di shell in /usr/local/bin
denominato sleepnow.sh
:
#!/bin/sh
pmset sleepnow
Quindi creare un file plist launchd
per la pianificazione di uno script da eseguire quotidianamente. Sarebbe come questo:
<?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>
Probabilmente vorrai metterlo in /System/Library/LaunchDaemons/
con il nomefile org.myschoolname.sleep.plist
. Regola l'ora e il nome secondo necessità.
Puoi caricare il plist usando il comando sudo launchctl load -w /System/Library/LaunchDaemons/org.myschoolname.sleep.plist
o riavviare il computer e caricarlo all'avvio del sistema.
Se non ti senti a tuo agio con l'utilizzo di launchd
file e strumenti da riga di comando, cerca l'app OS X a pagamento denominata Lingon che gestisce la creazione del file plist e lo carica.
Ecco un buon riferimento su pmset
, che è lo strumento da riga di comando per la gestione delle impostazioni di alimentazione in OS X .
Sebbene pmset
possa essere usato per impostare i programmi di sospensione e di veglia, riceverai comunque quella finestra di avviso in caso di sospensione programmata. Il comando pmset sleepnow
fa sì che il computer entri in modalità di sospensione immediatamente senza un avviso.