Establezca la computadora en modo de suspensión por un tiempo específico de CLI

1

Este comando de terminal configura la computadora en modo de suspensión:

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

¿Cómo puedo hacer que la computadora se duerma durante un tiempo específico, digamos 20 minutos? ¿Debo emitir un comando separado para activar la computadora en un momento específico?

Gracias

    
pregunta Dave Smith 23.04.2016 - 03:33

1 respuesta

1

Aquí hay un bash script que cuando se ejecuta, sin un argumento, programa el sistema para que se active en 20 minutos y luego lo pone en suspensión inmediatamente. O puede proporcionar, como argumento, la cantidad de minutos que desea que se duerma antes de que active el sistema. Desafortunadamente, la utilidad de línea de comandos de OS X pmset , que realiza la activación y el apagado del despertador, requiere privilegios elevados. Lo que significa que el comando se debe ejecutar usando sudo como se muestra en el ejemplo de salida a continuación.

En el ejemplo a continuación, script se guardó como sleepwake y luego se ejecutó en Terminal con chmod u+x sleepwake , luego se ejecuta como sleepwake para mostrar el mensaje de ayuda interno. (Nota: el directorio de trabajo actual en el que estoy está en mi $PATH . Consulte la Nota de ejemplos:, más abajo, para obtener información adicional).

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

$  

Creando sleepwake :

En una Terminal, escriba lo siguiente, presionando Enter después de cada comando:

touch sleepwake
open sleepwake

Copie y pegue el código a continuación en el documento abierto y en blanco.

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

Ahora guarde el documento, luego ciérrelo.

En la Terminal, haga que bash script sea ejecutable:

chmod u+x sleepwake

Ejecute el comando sleepwake sin usar sudo , para ver que se muestra la ayuda interna.

Luego, pruébelo por un minuto con el siguiente comando:

sudo sleepwake 1

Escriba su contraseña cuando se le solicite y presione Entrar.

El sistema ahora estará inactivo durante un minuto.

Ejemplos Nota: en los ejemplos se supone que sleep wake se guarda en un directorio que está en $PATH ; de lo contrario, si no lo está y está en el directorio actual, use sudo ./sleepwake o no en el directorio $PATH o actual, luego use sudo /path/to/sleepwake .

Notasadicionales:

Elcomentario#Dothemath...enlasecuenciadecomandossignificaqueelbloquedecódigoqueseencuentrajustodebajodeélconviertelafechaactualensegundosdesdelaépoca,paraagregarlacantidaddesegundosenminutosalacorrientefechahora,yluegovuelvaaconvertirparatenerunafechahoraenelformatoquerequierepmsetschedulewakeyestaserálafechahoraxnúmerodeminutosapartirdeahora,siendolafechayhoradeejecución,incrementólos20minutospredeterminadosolacantidaddeminutospasadoscomounargumentoenlalíneadecomandos.¡Guauu!:)

Unavezquesehayaprogramadolafechayhoraparaqueseactiveelsistemayqueelsistemasepongaensuspensión,sepuedeactivarantesdeloprevistosinecesitaaccederalsistemaantesdelafechadeactivaciónprogramadaporlosmedioshabituales,haciendoclicconelmouseoutilizandoelteclado,etc.

Paraobtenerinformaciónadicionalsobrepmset,consulte man página .

    
respondido por el user3439894 23.04.2016 - 07:49

Lea otras preguntas en las etiquetas