1 votos

Poner el ordenador en modo de reposo durante un tiempo determinado desde la CLI

Este comando de terminal pone el ordenador en modo de reposo:

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

¿Cómo puedo hacer que el ordenador duerma durante un tiempo determinado, por ejemplo 20 minutos? ¿Necesito emitir un comando separado para despertar el ordenador a una hora específica?

Gracias

0 votos

He actualizado el script para añadir sudo -k para revocar los privilegios elevados de la sesión de Terminal. El hecho de que el sistema va a dormir por un tiempo probablemente no es necesario ya que la sesión de sudo se agotará en ese Terminal antes de que el sistema se despierte si se duerme durante 10 minutos. Sin embargo, normalmente me gusta tenerlo allí ya que es una buena práctica en general, ya que una vez que el pmset se ejecutan no es necesario que los privilegios elevados permanezcan en esa sesión de Terminal.

1voto

user3439894 Puntos 5883

Aquí hay una bash script que cuando se ejecuta, sin un argumento, programa el sistema para que se despierte en 20 minutos y luego lo pone a dormir inmediatamente. O puede proporcionar, como argumento, el número de minutos que desea que duerma antes de despertar el sistema. Por desgracia, la utilidad de línea de comandos de OS X pmset , que se encarga de la programación de la vigilia y el sueño, requiere privilegios elevados. Esto significa que el comando debe ser ejecutado usando sudo como se muestra en el siguiente ejemplo.

En el ejemplo siguiente, el script se guardó como sleepwake y luego en el Terminal se hace ejecutable usando chmod u+x sleepwake y luego ejecuta como sleepwake para mostrar el mensaje de ayuda interna. (Nota: El directorio de trabajo actual en el que me encuentro está en mi $PATH . Para más información, véase la nota sobre los ejemplos, más abajo).

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

$  

Creación de sleepwake :

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

touch sleepwake
open sleepwake

Copiar y pegar el código abajo 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 y ciérrelo.

En el Terminal, haga el bash script ejecutable:

chmod u+x sleepwake

Ejecutar el sleepwake sin utilizar el comando sudo para ver que aparece la ayuda interna.

A continuación, pruébalo durante un minuto con el siguiente comando:

sudo sleepwake 1

Escriba su contraseña cuando se le solicite y pulse Intro.

El sistema dormirá ahora durante un minuto.


Ejemplos Nota: Los ejemplos suponen que sleep wake se guarda en un directorio que está en el $PATH Si no es así y está en el directorio actual, utilice sudo ./sleepwake o no en el $PATH o el directorio actual, entonces utilice sudo /path/to/sleepwake .


enter image description here

Notas adicionales:

El # Do the math... comentario en el script significa que el bloque de código directamente debajo de él convierte el fecha hora a los segundos desde Epoch, con el fin de añadir el número de segundos en minutos para dormir a la actual fecha hora y luego volver a convertir para tener entonces un fecha hora en el formato que pmset schedule wake requiere y este será el fecha hora x número de minutos a partir de ahora, siendo el fecha hora de ejecución, incrementando los 20 minutos por defecto o el número de minutos pasado como argumento en la línea de comandos. Wow! :)

Una vez que el fecha hora Si se ha programado el despertar y el sistema se ha puesto en reposo, se puede despertar antes de lo previsto si se necesita acceder al sistema antes del despertar programado fecha hora por los medios habituales, pulsando el ratón o utilizando el teclado, etc.

Para más información sobre pmset , ver que es página de manual .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X