Etiquetas

lunes, 12 de noviembre de 2012

Alarma RTC: Despiérta y anda


RTC - Wake: Cómo programar fácilmente el reloj RTC para encender la PC
Son tiempos en los que hay que ahorrar energía.
Dejar la PC encendida por horas, sólo porque en cierto horario va a ejecutar una cierta tarea (ejemplo grabar un stream de audio, bajar archivos, etc) no es negocio.
El reloj interno (RTC, siglas de Real Time Clock) viene en nuestra ayuda.
Sigue aquí un script simplísimo que permite programarlo fácilmente.

RTC son las siglas de "Real-Time Clock". Por decirlo lo más simple posible, el reloj del "BIOS" de la PC, que aún cuando la máquina está apagada continúa guardando los datos de hora y fecha. Eso sí, en la mayoría de los casos lo guarda con huso GMT.
El RTC tiene una función de alarma, que puede ser muy útil si quisiéramos "despertar" (encender la PC si está en estado de hinernación o suspendida a ram).
Podemos programar para encender la PC en cierto horario, cuando queremos realizar alguna tarea programada sin tener que dejar la computadora encendida durante horas, con el correlato de un interesante ahorro de energía.
Sigue abajo el script:


#!/bin/bash

##################################################
## rtc_wake.sh: ##
## Este script programa la alarma RTC del BIOS ##
## para despertar la maquina y realizar alguna ##
## tarea. ##
## Este script depende de rtcwake para grabar ##
## los datos en el BIOS. ##
## Para eso debe correrse como root. ##
## Requiere Debian pkg: util-linux. ##
## MGR - 11/11/2012 ##
##################################################
echo
echo "RTC2 Wake"
echo "---------"
echo
echo -ne "Ingrese fecha y hora a despertar. Formato: YYYY-MM-DD HH:MM:ss "
read inp
epoch=`date -d "$inp" +%s`
echo "epoch: $epoch"
rtcwake -m mem -t $epoch
El script debe correrse como root, porque son necesarios esos poderes para acceder a escribir el RTC.
Cuando lo ejecutemos nos pedirá que ingresemos el horario en que queremos que el PC despierte. Podemos hacerlo en horario local (ej. ART). La función del script es traducirlo a "timestamp" o segundos desde la "Época". Ese es el formato que requiere la utilidad rtcwake, que es el encargado de hacer su magia.
Inmediatamente la máquina suspenderá a RAM, ya que esa es la opción que se le pasó a rtcwake -m mem. También se podría suspender a disco.

Para asegurarnos de que vaya a funcionar podemos verificar si el BIOS lo soporta:

$ dmesg | grep -i "rtc"
rtc_cmos 00:04: RTC can wake from S4
En general, los BIOS posteriores al año 2000 suele soportar la función de RTC wake up.

Es sólo eso. Luego, sólo programar las tareas que se deseen hacer, con crontab o at.


No hay comentarios.:

Publicar un comentario