Herramientas de usuario

Herramientas del sitio


informatica:software:cli:rtcwake

rtcwake

Permite apagar el sistema y establecer un horario en el que despertarlo.

Forma parte del paquete util-linux

RTC viene de Real-Time Clock, y hace referencia al reloj del ordenador que está incluido en un chip y mantiene la hora actual.

Requisitos

Para poder usar este programa es necesario que el hardware soporte el encendido por RTC (wake up alarm, lo llaman en algunos sitios). Una forma de verificarlo, es desde el equipo Linux que queremos usarlo, buscar en los mensajes del sistema:

# dmesg | grep -i rtc

[mié sep  7 18:22:09 2022] PM: RTC time: 16:22:09, date: 2022-09-07
[mié sep  7 18:22:09 2022] rtc_cmos 00:01: RTC can wake from S4
[mié sep  7 18:22:09 2022] rtc_cmos 00:01: registered as rtc0
[mié sep  7 18:22:09 2022] rtc_cmos 00:01: setting system clock to 2022-09-07T16:22:10 UTC (1662567730)
[mié sep  7 18:22:09 2022] rtc_cmos 00:01: alarms up to one month, y3k, 114 bytes nvram, hpet irqs

En el ejemplo anterior, nos indica que se podría arrancar desde el estado de “sueño” ACPI S4, es decir, desde un apagado total.

Los estados de energía del sistema son:

  • S0: estado normal, encendido.
  • S1: en espera, la CPU no trabaja.
  • S2: “dormido”. La CPU no tiene alimentación, pero la RAM sí. Raramente se implementa.
  • S3: suspensión a RAM con muy poca alimentación.
  • S4: suspensión a disco (hibernación)
  • S5: apagado total.

Funcionamiento

rtcwake permite los siguientes modos (parámetro m o mode):

  • freeze: se paralizan los procesos y se suspenden los dispositivos, el sistema sigue en ejecución.
  • mem: suspende el equipo (contenido a RAM). Estado S3 de ACPI.
  • disk: hiberna el equipo (contenido a disco). Estado S4 de ACPI.
  • off: apaga el equipo. Estado S5 de ACPI.
  • no: solo establece la hora en que despierta el sistema. Se supone que será el usuario (o alguna tarea programada) quien apague/suspenda el equipo.
  • on: Es un modo que tampoco suspende y es utilizado para depuración de programas.
  • disable: Deshabilita una alarma programada.
  • show: muestra información de la alarma configurada.

Para ver los modos disponibles, ejecutamos rtcwake con la opción --list-modes:

rtcwake --list-modes

Si usamos la opción n podemos hacer una simulación. Esto es útil para verificar la ejecución del programa. Por ejemplo:

# rtcwake -m off --date +1hours -n
rtcwake: wakeup from "off" using /dev/rtc0 at Sun Sep 11 22:32:03 2022

Realmente lo que hace rtcwake es escribir en el fichero /sys/class/rtc/rtc0/wakealarm un valor en Unix epoch time (segundos transcurridos desde 01/01/1970) que corresponde a la fecha y hora en que despertará al sistema. También se puede ver información sobre RTC en /proc/driver/rtc

Suspender y arrancar

El siguiente comando suspenderá el equipo y lo arrancará tras 30 segundos:

rtcwake -m mem -s 30

Apagar y arrancar

El siguiente comando apagará el equipo y lo arrancará tras 60 segundos:

rtcwake -m off -s 60

Establecer una hora y fecha de encendido y después apagar:

rtcwake -m off --date 20221011080000

Apagará el equipo y lo encenderá a las 8:00 del 11/10/2022 siempre que el sistema tenga la misma hora que el RTC (usar la opción -n para hacer simulación y verificar)

Recursos

informatica/software/cli/rtcwake.txt · Última modificación: por tempwin