Mit ‘rtcwake’ getaggte Artikel

Aufwachen!

von MichiK am 1. April 2009 um 12:43 Uhr

Damals, als ich noch jung war und Windows genutzt hatte, gab es dort schon ein Feature, den Rechner, wenn er im Standby-Zustand war, für geplante Tasks automatisch wieder aufwecken zu lassen. Das funktionierte damals bei mir nie so richtig, aber an der ACPI-Front hat sich seitdem ja einiges getan. Wenn Windows sowas kann, muss das mit Linux doch erst recht machbar sein. Besonders interessantes Anwendungsfeld dafür: Den Rechner abends in den Standby legen und sich morgens von ihm mit Musik wecken lassen. Spart Strom und man hat nicht die ganze Nacht einen rauschenden Lüfter neben sich. Der Gedanke schwebte mir schon seit längerem vor, aber die entsprechende Software, mit der ich das machen kann, habe ich irgendwie nie gefunden.

Nun habe ich gestern Abend noch einmal nachgeschaut und bin auf rtcwake gestoßen. Ja, das kann genau das, was ich möchte – das zeitgesteuerte Aufwachen jedenfalls. Eben ein kleines Shellskript drumherum gehackt und das liegt jetzt in ~/bin von root:

#!/bin/sh
USER="michik"
if [ ! "$*" ]; then
echo "You must give me a wakeup time!"
exit 1
else
pgrep -U $USER "cmus" >/dev/null || {
echo "No running cmus found!"
exit 4
}
DISPLAY=":0.0" su $USER -c "xscreensaver-command -lock" || exit 2
sleep 5
rtcwake --mode mem --time `date -d "$*" +%s` || exit 3
sleep 10
cmus-remote --server /home/$USER/.cmus/socket --play
fi

Was soll ich sagen, es kann alles, was ich brauche: Es nimmt beleibige absolute und auch relative Zeitangaben als Weckzeit entgegen (auch “now + 8 hours”, “tomorrow 10:00″ und ähnliches), prüft ob cmus und xscreensaver laufen und legt sich nicht schlafen, falls etwas davon fehlt. Ansonsten aktiviert es den Screensaver mit Passwortschutz und legt den Rechner schlafen. Nach dem Aufwachen startet es dann noch die Musikwiedergabe.

Jetzt kann ich endlich meinen dummen und nicht sehr effektiven (Piep! Piep! “He, aufstehen!” Piep! Piep! Piep! “Hallo?” Piep! Piep! Piep! Piep! “Keiner da? Na gut, bin ich halt wieder still…”) Wecker ausrangieren und gegen eine effektive und noch dazu reichlich geekige Lösung ersetzen. :)