Questo è uno script di bash che, quando viene eseguito, senza un argomento, pianifica il sistema in modo che si attivi in 20 minuti e lo mette immediatamente in stato di sospensione. Oppure puoi fornire, come argomento, il numero di minuti in cui vuoi che dorma prima che riattivi il sistema. Sfortunatamente l'utilità della riga di comando OS X pmset
, che esegue la funzione di riattivazione e sospensione, richiede privilegi elevati. Il comando deve essere eseguito utilizzando sudo
come mostrato nell'output di esempio di seguito.
Nell'esempio seguente, lo script è stato salvato come sleepwake
e quindi in Terminale reso eseguibile utilizzando chmod u+x sleepwake
, quindi eseguito come sleepwake
per mostrare il messaggio di guida interno. (Nota: la directory di lavoro corrente in cui mi trovo si trova nel mio $PATH
. Consulta gli esempi Nota :, più avanti, per ulteriori informazioni.)
$ sleepwake
This script must be run as root using sudo.
Syntax: sudo sleepwake [n]
Example: sudo sleepwake 10
Wakes the system 10 minutes after going to sleep.
Example: sudo sleepwake
Wakes the system, using the default, 20 minutes after going to sleep.
$
Creazione di sleepwake
:
In un terminale, digita quanto segue, premendo Invio dopo ciascun comando:
touch sleepwake
open sleepwake
Copia e incolla il codice sotto nel documento aperto, vuoto,
Codice:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
printf "\n This script must be run as root using sudo.\n\n"
printf " Syntax: sudo sleepwake [n]\n Example: sudo sleepwake 10\n"
printf " Wakes the system 10 minutes after going to sleep.\n\n"
printf " Example: sudo sleepwake\n"
printf " Wakes the system, using the default, 20 minutes after going to sleep.\n\n"
exit 1
else
# If no argument (number of minutes) was passed.
if [[ -z $1 ]]; then
# Default number of minutes to sleep.
m="20"
else
# Number of minutes to sleep given from command line.
m="$1"
fi
# Do the math and set date time format to
# what 'pmset schedule wake' requires.
e="$(date -j -f "%a %b %d %T %Z %Y" "$(date)" "+%s")"
((o=60*$m))
((e+=o))
t="$(date -r $e "+%m/%d/%Y %H:%M:%S")"
# Schedule the 'wake' date time and sleep the system.
pmset schedule wake "$t"
pmset sleepnow
# Revoke elevated privileges from this Terminal session.
sudo -k
fi
Ora salva il documento, quindi chiudilo.
In Terminale, crea l'eseguibile script bash :
chmod u+x sleepwake
Esegui il comando sleepwake
senza utilizzare sudo
, per vedere che viene visualizzata la guida interna.
Quindi verificalo per un minuto con il seguente comando:
sudo sleepwake 1
Inserisci la password quando richiesto e premi Invio.
Il sistema ora dormirà per un minuto.
Esempi Nota: gli esempi presuppongono che sleep wake
venga salvato in una directory che si trova in $PATH
, altrimenti in caso contrario e si trova nella directory corrente, quindi usa sudo ./sleepwake
o no nella directory $PATH
o corrente, quindi utilizza sudo /path/to/sleepwake
.
Noteaggiuntive:
Ilcommentodi#Dothemath...
nelloscriptsignificacheilbloccodicodicedirettamentesottodiessoconvertelaoracorrenteinsecondidaEpoch,inmododaaggiungereilnumerodisecondiinminutidisospensioneallacorrentedata/ora,quindiriconvertirliperavereunadata/oranelformatorichiestodapmsetschedulewake
equestasaràladata/orax
numerodiminutidaora,essendoladata/oradiesecuzione,haincrementatoi20minutipredefinitioilnumerodiminutipassaticomeargomentosullarigadicomando.Wow!:)
Unavoltaprogrammataladata/oraperriattivareilsistema,èpossibilesvegliarloprimadelprevistoseènecessarioaccederealsistemaprimadellasvegliadataoraconisolitimezzi,facendoclicconilmouseousandolatastiera,ecc.
Perulterioriinformazionisupmset
,vedicheè uomo pagina .