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,yluegovuelvaaconvertirparatenerunafechahoraenelformatoquerequierepmsetschedulewake
yestaserálafechahorax
númerodeminutosapartirdeahora,siendolafechayhoradeejecución,incrementólos20minutospredeterminadosolacantidaddeminutospasadoscomounargumentoenlalíneadecomandos.¡Guauu!:)
Unavezquesehayaprogramadolafechayhoraparaqueseactiveelsistemayqueelsistemasepongaensuspensión,sepuedeactivarantesdeloprevistosinecesitaaccederalsistemaantesdelafechadeactivaciónprogramadaporlosmedioshabituales,haciendoclicconelmouseoutilizandoelteclado,etc.
Paraobtenerinformaciónadicionalsobrepmset
,consulte man página .