Linux-PC automatisch abschalten & starten – so geht’s

Weder Desktop-PCs noch Serverdienste müssen permanent laufen, wenn es eindeutige Zeiten gibt, wo keiner sie nutzt. Manuelles Abschalten ist die übliche Lösung, komfortabler aber sind der automatische Shutdown und ein zeitgesteuerter Neustart.

Wenn ein Datenserver zwischen 22:00 Uhr abends und 8:00 Uhr morgens garantiert nicht gebraucht wird, liegt es nahe, ihn für diese zehn Stunden abzuschalten. Das spart nicht nur Strom, sondern verlängert auch die Lebenszeit der Hardwarekomponenten. Das zeitgesteuerte Ausschalten ist per Cronjob eine leichte Übung, aber optimal wird der Hardwareschlaf erst, wenn auch das Aufwachen ohne manuellen Eingriff des (Home-)Administrators gelingt.

Rtcwake: Unterschätztes Standardwerkzeug

Das einschlägige Tool, um einen Rechner komplett auszuschalten (oder – falls unterstützt – in einen ACPI-Ruhezustand zu versetzen) und ihn zur gewünschten Zeit wieder zu starten, ist auf praktisch jedem Linux-System vorinstalliert. Rtcwake ist Bestandteil des Standardpakets „util-linux“. Das „rtc“ im Toolnamen steht für Real Time Clock und bezieht sich auf die physikalische Hardwareuhr.

Diese läuft auch, wenn die Hardware in einem Ruhezustand oder komplett ausgeschaltet ist und kann den Neustart auslösen, wenn ein definierter Zeitpunkt erreicht ist. Unter Linux ist dieser Zeitpunkt standardmäßig in der Datei „/sys/class/ rtc/rtc0/wakealarm“ abgelegt und das Tool rtcwake ist das Werkzeug, diesen Zeitpunkt vorzugeben.

Im einfachsten Fall sieht ein Kommando folgendermaßen aus:

sudo rtcwake -m off -s 180

Der Befehl ist gut geeignet, um zu testen, ob die Hardware prinzipiell mitspielt. sudo oder root-Recht ist immer erforderlich. Der Schalter „-m“ bestimmt den ACPI-Modus. Mögliche Werte sind „standby“, „mem“, „disk“, „off“ und „no“. Letzteres „no“ kann dazu dienen, einen Aufwachzeitpunkt festzulegen, ohne den Rechner in irgendeiner Weise zu beenden. „standby“, „mem“, „disk“ sind Suspendvarianten unterschiedlicher Schlaftiefe. Für unsere Zwecke einschlägig ist „off“, welches das System komplett herunterfährt.

Als zweiter Parameter ist hier „-s“ („seconds“) mit einer nachfolgenden Zeitangabe in Sekunden angegeben. Der Befehl wird also, wenn die Hardware mitspielt, das System komplett beenden und dann nach drei Minuten neu starten (180 Sekunden). Wir empfehlen, den geplanten Neustart immer mit diesem Parameter „-s […]“ anzugeben, selbst wenn es sich um viele Stunden handelt. Es ist wenig Mühe, etwa neun Stunden in Sekunden umzurechnen (9*3600=32 400).

Mit dem Schalter „-t“ („time“) ist auch eine exakte Zeitangabe möglich. Da diese Zeitangabe immer in Linux-Sekunden seit dem 1.1.1970 zu berechnen ist, muss in der Regel eine Date-Variable aushelfen:

sudo rtcwake -m off -t $(date +%s -d ‚tomorrow 08:00‘)

Dies würde den Rechner ausschalten und am nächsten Tag um 8:00 Uhr wieder einschalten. Achten Sie beim Hantieren mit Schalter „-t“ darauf, dass bei einem Herunterfahren nach Mitternacht „today“ statt „tomorrow“ gewählt werden muss. Aber wie schon angesprochen: Eine Zeitangabe in Sekunden mit Schalter „-s“ ist stets der einfachere Weg.

Rtcwake als Cronjob

Da rtcwake root-Recht erfordert, müssen solche Befehle in der Crontab von root untergebracht werden (in einer User-Crontab würde der Befehl einfach ignoriert). Die Crontab von root bearbeiten Sie mit folgendem Kommando:

sudo crontab -e -u root

Wenn in der crontab keine PATH-Anweisung steht, ist die volle Pfadangabe zum benötigten Kommando erforderlich:

0 1 * * * /usr/sbin/rtcwake -m off -s 30600

Dieser Befehl schaltet den Rechner um 1:00 Uhr nachts ab und startet ihn wieder nach 30 600 Sekunden, das sind 8,5 Stunden und somit exakt um 9:30 Uhr. Die Pfadangabe „/usr/sbin/rtcwake“ sollte auf jedem Linux zutreffen, kann aber mit

which rtcwake

vorsichtshalber vorab geprüft werden.

Anleitung: Linux-Server rundherum absichern

Rtcwake funktioniert nicht mit jeder Hardware

Während PCs, Notebooks und auch Platinenrechner wie der Odroid XU4 den beschriebenen Einschlaf-Aufwach-Automatismus zuverlässig mitspielen, ist die Methode leider nicht überall tauglich. So beantwortet etwa der Raspberry 3 rtcwake generell mit einer Fehlermeldung, während ein Odroid U3 zwar herunterfährt, aber nicht planmäßig startet. Letztlich hilft nur Ausprobieren. Was per root-Crontab in jedem Fall funktioniert (sudo crontab -e -u root), ist der zeitgesteuerte Shutdown – im folgenden Beispiel wieder um 1:00 Uhr nachts:

0 1 * * * /sbin/shutdown now

Da Platinenrechner typischerweise booten, wenn die Stromzufuhr zunächst unterbrochen und zur passenden Zeit wieder eingeschaltet wird, kann man sich für den zeitgesteuerten Neustart mit einer einfachen mechanischen oder digitalen Zeitschaltuhr behelfen (ab fünf Euro).

Wer die Aufgabe ganz schick lösen will, kann auch eine intelligente Funksteckdose verwenden. Fritzbox-Besitzer erhalten für 40 Euro den flexiblen Stecker Fritz Dect 200, der sich über die Fritzbox-Konfiguration („Heimnetz –› Smart Home“) komfortabel einstellen lässt.

Egal, ob primitive mechanische Zeitschaltuhr oder vergleichsweise edle Funksteckdose: Beachten Sie immer, den Zeitpunkt des ordentlichen Systemshutdowns über die Crontab einige Minuten früher zu legen als das Abschalten der Stromversorgung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.