Automatisch aufwachen, updaten und wieder schlafen gehen lassen?

mat619

Member
Registriert
27 Mai 2010
Beiträge
145
Hallo zusammen,

da mein X300 zurzeit mehr oder weniger dauerhaft am Strom hängt, oft mehrere Tage nicht genutzt wird und danach immer relativ lange zum Updaten benötigt (openSUSE Tumbleweed, massig Updates in kurzer Zeit) kam mir die Idee, dass er diese doch eigentlich schön irgendwann nachts ohne mich machen könnte.

Dafür müsste folgendes passieren:
  1. Selbsttätig jeden Tag um z. B. 4:00 Uhr aus dem Standby aufwachen
  2. Nicht sofort wieder schlafen gehen, weil der Deckel zu ist!
  3. Updaten
  4. Wieder schlafen gehen
Punkt 3 und 4 ist kein Thema, ist ja nur ein Einzeiler.

Punkt 1 erscheint mir mit rtcwake lösbar, allerdings abhängig vom Startzeitpunkt des Befehls - das heißt man müsste ihn vor jedem Standby ausführen, was mir unprakisch erscheint... oder ich habe da was in der Doku missvestanden.

Punkt 2 ist das, woran ich bei einem ersten Test sofort gescheitert bin. Ich möchte nicht dauerhaft HandleLidSwitch=ignore setzen, da mein ThinkPad sonst unter Garantie irgendwann einmal nach unbedachtem Zuklappen bis zum St. Nimmerleinstag durchläuft.

Hat jemand eine Idee, wie man das überhaupt und am geschicktesten umsetzen könnte?

Besten Dank im Voraus!

VG Matt
 
HandleLidSwitch=ignore per script setzen und vor dem schlafenblegen wieder zurücksetzen?
 
Das Problem ist, dass der Schalter laut systemd Doku erst nach Reboot oder Neuanmeldung zieht... Ist nichts, das man einfach nach Bedarf bei Laufzeit togglen kann.
 
wenn systemd der Lösung im Weg steht, dann trenn' dich von systemd.
 
Normalerweise versetzt rtcwake den Rechner in Standby und weckt nach -s Sekunden wieder auf. Du kannst auch mit -t Sekunden eine Epoch-time zum Aufwecken angeben, müsstest Du aber auch für jedes einzelne Aufwecken neu errechnen und setzen, und mit -m no rtcwake daran hindern, in den Standby zu gehen. Siehe z.B. https://linux.die.net/man/8/rtcwake

Benutzt systemd ein Skript um in Standby zu gehen, wie acpid, bzw., gibt es die Möglichkeit, systemd dazu zu bringen nach einem Trigger ein Skript auszuführen, oder ist da alles fest vorgegeben?
 
Wenn wir schon bei systemd sind, nutze doch einfach einen systemd-Timer und setze dort WakeSystem=true.

If true, an elapsing timer will cause the system to resume from suspend, should it be suspended and if the system supports this.

https://www.freedesktop.org/software/systemd/man/systemd.timer.html

Du musst dann nur noch drauf achten, den Rechner wieder in den Suspend zu bringen, idealerweise nur, wenn er es vorher auch schon war. Wenn es reicht, dass er immer in den Suspend geht, kannst du das hier in der Service Unit nutzen:

Code:
ExecStopPost=/bin/systemctl suspend
 
Wenn wir schon bei systemd sind, nutze doch einfach einen systemd-Timer und setze dort WakeSystem=true.



https://www.freedesktop.org/software/systemd/man/systemd.timer.html

Du musst dann nur noch drauf achten, den Rechner wieder in den Suspend zu bringen, idealerweise nur, wenn er es vorher auch schon war. Wenn es reicht, dass er immer in den Suspend geht, kannst du das hier in der Service Unit nutzen:

Code:
ExecStopPost=/bin/systemctl suspend

Danke, das klingt nach einem guten Ansatz. Bliebe nur noch die Frage, wie ich ihn dazu bekomme während des zeitgesteuerten Aufwachens nicht den Deckelsensor zu interpretieren... Vielleicht mit systemd-inhibit --what=handle-lid-switch? Damit sollte das wohl möglich sein, nur bin ich mir nicht sicher wie in diesem speziellen Fall. Das hat nach meinem Verständnis ja Gültigkeit, solange der als Parameter mitgegebene Befehl noch läuft. Daran müsste man jetzt irgendwie Timer + Update knüpfen...
 
  • ok1.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen
Zurück
Oben