ubuntuusers.de

rtcwake

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png Der Befehl rtcwake dient zur Programmierung des zeitgesteuerten Starts des schlafenden oder ausgeschalteten Rechners. Zu diesem Zweck wird in der Firmware des Rechners ein „Wecker gestellt“. Während das ältere nvram-wakeup dazu BIOS-Funktionen verwendet, nutzt das Programm ACPI. Damit es sauber funktioniert, sollte die vorhandene ACPI-Implementation nicht zu alt (bzw. fehlerhaft) sein. Im Zweifelsfall: einfach ausprobieren...

Bei mobilen Rechnern können einige externe Geräte nach dem Aufwachen abgeschaltet bleiben. Hintergrund: der Batterie-Modus (Akku-Betrieb) ist ein Sonderfall – man wollte vermeiden, dass eine versehentliche Aktivierung den Akku leert. Im Netzbetrieb oder bei Desktop-Rechnern ist diese Problematik nicht relevant.

Installation

rtcwake ist in jeder Standardinstallation vorhanden und im Paket

  • util-linux

enthalten.

Benutzung

Das Programm muss mit Root-Rechten[1] ausgeführt werden. Die allgemeine Syntax lautet[2]:

sudo rtcwake OPTIONEN WECKZEIT 

Die WECKZEIT kann wahlweise nach 3 verschiedenen Methoden angegeben werden (siehe Optionen):

  • Mit der Option --time als absolute Unixzeit in Sekunden seit Anfang 1970.

  • Mit der Option --date als absolute oder relative Zeit in verschiedenen Formaten und Einheiten.

  • Mit der Option --seconds als relative Zeit in Sekunden nach dem aktuellen Aufruf des Programms.

Wenn rtcwake nicht sofort den Schlaf einleitet, ist WECKZEIT anschließend in der Datei /sys/class/rtc/rtc0/wakealarm zu finden und kann auch abgefragt werden:

sudo rtcwake --mode show 

Optionen

Folgende Parameter stehen zur Verfügung:

Startparameter
Option Beschreibung
-d, --device Gerät für die Systemuhr. Standard ist /dev/rtc0. Angabe ist nur erforderlich, wenn man mehrere Hardwareuhren im System hat oder die Gerätedatei anders benannt ist.
-n, --dry-run Testlauf ohne Aktion
-l, --local Systemuhr arbeitet mit lokaler Zeit (Windows Standard)
-u, --utc Systemuhr arbeitet mit UTC (Linux Standard)
--list-modes Zeigt eine Liste der möglichen Schlafzustände und weiterer Werte für die Option --mode.
-m, --mode MODUS ACPI Energiesparmodus: freeze (S0), standby (S1), mem (S3), disk (S4), off (S5) leiten den jeweiligen Schlafzustand ein, sofern technisch möglich (vgl. Option --list-modes). Weitere mögliche Werte sind no (nur Zeit setzen, aber nicht schlafen), disable (gesetzte Weckzeit löschen) und show (Weckdaten anzeigen). Außerdem gibt es zur Fehlersuche noch on, womit bis zum angegebenen Zeitpunkt gewartet wird.
-s, --seconds X Aufwecken nach X Sekunden ab jetzt.
-t, --time X Zeitpunkt des Aufwachens in Sekunden nach Anfang 1970. Datum (JJJJMMTT) und Uhrzeit (HH:MM) müssen zuerst umgewandelt werden. Beispiel:
date -d '20121111 11:11' +%s ergibt den gesuchten Wert 1352628660.
--date WECKZEIT Aufwecken zum angegebenen Datum und/oder Uhrzeit. Mögliche Formate für WECKZEIT kann man der Manpage entnehmen.
-h, --help verfügbare Optionen anzeigen

Die Optionen --local oder --utc benötigt man in der Regel nicht. Die Option --mode sollte man immer angeben, denn der Standard standby (S1) für rtcwake ist leider in der Hardware nur selten realisiert. Die drei Optionen --seconds, --time und --date schließen einander aus, also nur eine von diesen verwenden.

Auch die Manpage zu rtcwake ist lesenswert.

Beispiele

  • Rechner für 5 Minuten schlafen legen (Energiesparmodus):

    sudo rtcwake -m mem -s 300 
  • Rechner ausschalten und nach 10 Minuten wieder einschalten:

    sudo rtcwake -m no -s 600 && sudo poweroff 
  • Rechner ausschalten und am 11.11.2016 um 11:11 Uhr wieder einschalten:

    sudo rtcwake -m off -t $(date -d '20161111 11:11' +%s) && echo 'Helau!' 

Problembehebung

rtcwake ist abhängig von den Fähigkeiten der Hardware, konkret der Rechneruhr, deren Unterstützung durch die Firmware des Rechners und den Möglichkeiten von Linux, mit Hardware und Firmware zu kommunizieren, was wiederum von der Implementierung von ACPI in der Firmware des Rechners abhängt und ggf. deren Einstellungen.

Bei neueren Rechnern scheinen manche Hersteller an den ACPI-Funktionen zu sparen oder vielleicht auch nur bei teureren Modellen zu aktivieren.

Was beim vorliegenden System möglich ist, sollte dieser Befehl zeigen:

rtcwake --list-modes 

Beispielausgabe:

freeze mem disk off no on disable show

Die Methode freeze sollte immer möglich sein, weil dabei der Linux Kernel keine Unterstützung durch Hardware und Firmware des Rechners benötigt. Allerdings wird auch nur die CPU angehalten.

Wenn die tieferen Schlafzustände Suspend-to-RAM (S3), Suspend-to-Disk (S4) oder Wecken aus dem ausgeschalteten Zustand (S5) nicht funktionieren, ist sinnvoll, beim Hersteller des Rechners nach einem Update der Firmware zu suchen. Linux beherrscht diese Funktionalitäten, sobald die Hardware mitspielt.

Für das Aufwachen aus einem Schlafzustand enthält der Linux Kernel entsprechenden Code. Leider ist dieser nicht in allen Fällen ausreichend: Manche Hardware, die einen proprietären Treiber außerhalb des Kernels verwendet, benötigt zum Aufwachen zusätzliche spezielle Software im Userspace; hiervon betroffen sind beispielsweise manche Grafikkarten.

Diese Revision wurde am 10. Januar 2025 10:28 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Shell