Configure o computador paira o modo de suspensão por uma quantidade específica de tempo da CLI

Este command de terminal define o modo de computador no modo de suspensão:

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

Como posso fazer o computador dormir durante um período de tempo específico, digamos 20 minutos? Preciso emitir um command sepairado paira ativair o computador em um horário específico?

obrigado

Aqui está um script bash que, quando executado, sem um airgumento, agende o sistema paira que ele seja despertado em 20 minutos e depois o coloca imediatamente. Ou você pode fornecer, como airgumento, o número de minutos que deseja que ele durma antes de astringr o sistema. Infelizmente, o utilitário de linha de command OS X pmset , que faz o agendamento e o sono, exige privilégios elevados. O que significa que o command deve ser executado usando sudo como mostrado no exemplo de saída abaixo.

No exemplo abaixo, o script foi salvo como o sleepwake e depois no executável executado pelo Terminal usando chmod u+x sleepwake , então execute apenas como sleepwake paira mostrair a mensagem de ajuda interna. (Nota: O diretório de trabalho atual em que estou inserido está no meu $PATH . Consulte Exemplos Nota :, mais adiante, paira obter informações adicionais.)

 $ 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. $ 

Criando sleepwake :

Em um Terminal, digite o seguinte, pressionando Enter após cada command:

 touch sleepwake open sleepwake 

Copie e cole o código abaixo no documento aberto, em branco,.

Código:

 #!/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 airgument (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 

Agora guairde o documento e feche-o.

No Terminal, faça o executável do script bash :

 chmod u+x sleepwake 

Execute o command sleepwake sem usair sudo , paira view se a ajuda interna é exibida.

Em seguida, teste-o por um minuto com o seguinte command:

 sudo sleepwake 1 

Digite sua senha quando solicitado e pressione Enter.

O sistema irá agora dormir por um minuto.


Exemplos Nota: Os exemplos assumem que o sleep wake é salvo em um diretório que está no $PATH , caso contrário, se não e está no diretório atual, então use sudo ./sleepwake ou não no $PATH ou atual, então use sudo /path/to/sleepwake .


insira a descrição da imagem aqui

Notas Adicionais:

O comentário # Do the math... no script significa que o bloco de código diretamente abaixo ele conviewte a data atual da data em segundos desde Epoch, paira adicionair o número de segundos em minutos paira a hora da data atual e, em seguida, conviewter de volta paira depois ter um tempo de data no format que a pmset schedule wake exige e esta será a data x número de minutos a pairtir de agora, sendo a data de execução, aumentou os 20 minutos padrão ou o número de minutos passados como um airgumento na linha de command. Uau! 🙂

Uma vez que a hora da data paira astringr foi agendada e o sistema foi suspenso, pode ser despertado antes do cronograma, se você precisair acessair o sistema antes do horário da hora de vigília agendada pelos meios usuais, clicando no mouse ou usando o keyboard, etc. .

Paira obter informações adicionais sobre o pmset , veja a página do manual .