Imposta il computer sulla modalità di sospensione per un importo specifico di tempo dalla CLI

1

Questo comando del terminale imposta il computer in modalità sospensione:

osascript -e 'tell application "Finder" to sleep'

Come posso far dormire il computer per un periodo di tempo specifico, ad esempio 20 minuti? Devo emettere un comando separato per riattivare il computer in un momento specifico?

Grazie

    
posta Dave Smith 23.04.2016 - 03:33
fonte

1 risposta

1

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/oranelformatorichiestodapmsetschedulewakeequestasaràladata/oraxnumerodiminutidaora,essendoladata/oradiesecuzione,haincrementatoi20minutipredefinitioilnumerodiminutipassaticomeargomentosullarigadicomando.Wow!:)

Unavoltaprogrammataladata/oraperriattivareilsistema,èpossibilesvegliarloprimadelprevistoseènecessarioaccederealsistemaprimadellasvegliadataoraconisolitimezzi,facendoclicconilmouseousandolatastiera,ecc.

Perulterioriinformazionisupmset,vedicheè uomo pagina .

    
risposta data 23.04.2016 - 07:49
fonte

Leggi altre domande sui tag