¡Esta es una revisión vieja del documento!
Tabla de Contenidos
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). EstadoS3de ACPI.disk: hiberna el equipo (contenido a disco). EstadoS4de ACPI.off: apaga el equipo. EstadoS5de 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
- Estados de energía del sistema (Microsoft Docs)
