rtcwake

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 15:00:20

Nein, natürlich nicht. Ich möchte, dass ein automatisches reboot in einem batch-script nach rtcwake in der angegebenen Form ausgeführt wird.

Grüße, Günther

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: rtcwake

Beitrag von JTH » 08.02.2015 15:06:05

Ich denke es reicht, wenn du die 3 Schritte genau so in ein Skript schreibst. Debianpm-utils löst sowas meine ich auf diese Weise.

Code: Alles auswählen

#!/bin/sh

/etc/init.d/vdr stop
rtcwake -m mem ...
# dürfte auch ohne sleep funktionieren
sleep 10
reboot
Das Skript wird durch den Suspend ja nicht beendet und sollte nach dem Resume nach dem rtcwake weiterlaufen – in diesem Fall löst es dann einen Neustart aus.
Manchmal bekannt als Just (another) Terminal Hacker.

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 15:11:36

Also, damit ich das nicht missverstehe: Die Schlafzeit soll keine 10sec oder irgendeine andere konstante Dauer betragen, sie ist variabel, mindestens eine Stunde, wegen weniger schicke ich das Gerät nicht schlafen. Aber wenn du das sagst, dann probiere ich mal... :wink:

Grüße, Günther

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rtcwake

Beitrag von NAB » 08.02.2015 15:19:19

Die "Schlafzeit" wird nach dem Aufwachen ausgeführt, um ihm Zeit zu geben, wieder komplett aufzuwachen, bevor er herunterfährt. ggf. musst du die erhöhen, wenn es nicht funktioniert.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 15:26:21

Ich glaube NAB und ich verstehen unter "Schafzeit" jeweils was anderes. Für NAB ist es die Zeit, die das script NACH dem Aufwachen warten soll, bevor es den nächsten Befehl (hier reboot) ausführt. Ich dagegen dachte an die Zeit, in der der Rechner inaktiv bleibt, also gerade nicht aufwachen soll. Habe ich das korrekt interpretiert? Wenn ja: sind die zusätzlichen 10s irgendwie von Belang?

[edit], scheinbar sind sie es nicht: Es läuft!!! :mrgreen: :mrgreen: :mrgreen:

Schön, schön, schön, Hätt' ich nicht gedacht, eigentlich hätte ich erwartet, dass das Zicken-AAs Tevii mir wieder durch Bestehen auf sekundenlanger absoluter Strom-Abstinenz einen Strich durch die Rechnung macht.
So, jetzt brauche ich noch einen Dialog, mit dem ich die zwei Parameter: Datum und Uhrzeit in das script kriege.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: rtcwake

Beitrag von JTH » 08.02.2015 15:43:00

Ja, das hast du richtig interpretiert. Wahrscheinlich ist das sleep an der Stelle wirklich überflüssig und du kannst es einfach streichen. Wie NAB schreibt, wollte ich nur sichergehen, dass der Rechner richtig wieder aufwacht.
Manchmal bekannt als Just (another) Terminal Hacker.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rtcwake

Beitrag von NAB » 08.02.2015 15:52:21

Du musst zenity installieren.

Code: Alles auswählen

#!/bin/sh
Weckzeit=`zenity --entry`  # muss im Format 20150205 12:05 eingegeben werden.
WeckzeitS=`date -d "$Weckzeit" +%s`
echo Gewünschte Weckzeit in Sekunden: $WeckzeitS
rtcwake -m no -t $WeckzeitS
ungetestet ... probiere es aus, bevor du es mit -m mem scharf schaltest.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

SleipniR

Re: rtcwake

Beitrag von SleipniR » 08.02.2015 16:16:12

Du könntest noch versuchen, ob der Rechner aus S5/Soft-Off aufwacht, wenn im BIOS RTC Alarm auf disabled gestellt ist. Ich habe ein Mainboard, das nur mit so einer kontraintuitiven Einstellung funktioniert. Manchmal braucht man auch die Kerneloption "hpet=disable".

Außerdem kann VDR dem Shutdown-Skript die Anfangszeit des nächsten Timers übergeben. Da brauchst Du nix händisch eingeben.

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 17:04:49

zenity: 40 mb für zwei Eingaben??? Möchte ich eigentlich nicht

Code: Alles auswählen

read -p "Einschaltdatum (jjjjmmtt): " datum
read -p "Einschaltzeit (hh:mm): " zeit
zusammen="'"$datum' '$zeit"'"
Wie kriege ich "zusammen" oder "datum" und "zeit" anstelle von '20150208 12:45'
in

Code: Alles auswählen

rtcwake -u -m mem -t $(date -d '20150208 12:45' +%s)
. Ich sagte ja schon, diese shell-Syntax ist mir ein Greuel.

Auf SleipniRs Vorschäge komme ich päter zurück.

Grüße, Günther

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rtcwake

Beitrag von NAB » 08.02.2015 17:26:50

Code: Alles auswählen

read -p "Einschaltdatum (jjjjmmtt): " datum
read -p "Einschaltzeit (hh:mm): " zeit
zusammen="$datum $zeit"
echo Weckzeit: $zusammen
sekunden=`date -d "$zusammen" +%s`
echo in Sekunden: $sekunden
rtcwake -m no -t $sekunden
(schön primitiv gehalten)
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 18:31:46

Für mich ist diese Syntax keine Frage von primitiv oder hochentwickelt, für mich ist die schlicht und ergreifend krank. Aber lassen wir das, sonst krieg ich wieder Ärger mit Vertretern der reinen Lehre.

Also was ist hier noch falsch:

Code: Alles auswählen

#!/bin/sh

read -p "Einschaltdatum (jjjjmmtt): " datum
read -p "Einschaltzeit (hh:mm): " zeit
/etc/init.d/vdr stop
zusammen="$datum $zeit"
sekunden='date -d "$zusammen" +%s'
rtcwake -u -m mem -t $sekunden
sleep 5
reboot
Ich finde den Fehler nicht.

Grüße, Günther

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: rtcwake

Beitrag von JTH » 08.02.2015 18:37:17

Code: Alles auswählen

sekunden='date -d "$zusammen" +%s'
So bekommst du einen String, in dem wörtlich „date -d "$zusammen" +%s“ drin steht:

Code: Alles auswählen

$ sekunden='date -d "$zusammen" +%s'
$ echo $sekunden 
date -d "$zusammen" +%s
Du willst aber die Ausgabe von date in der Variablen ablegen:

Code: Alles auswählen

sekunden=$(date -d "$zusammen" +%s)
# oder äquivalent, aber evtl. mit Verwechslungsgefahr:
sekunden=`date -d "$zusammen" +%s`
Es hätte also nur ` statt ' sein müssen, $( ) ist da eindeutiger zu erkennen ;)
Manchmal bekannt als Just (another) Terminal Hacker.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rtcwake

Beitrag von NAB » 08.02.2015 18:40:17

Ich glaub, genau das meint guennid mit "krank" ;-)
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: rtcwake

Beitrag von JTH » 08.02.2015 18:41:31

Der Unterschied ist doch offensichtlich :mrgreen:
Manchmal bekannt als Just (another) Terminal Hacker.

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 18:47:44

Ich hab's geahnt!!! Der Entwickler wird wahrscheinlich ein Franko-Kanadier sein. Accent grave statt einfacher Anführungszeichen!!! Ich fass es nicht!!! Hoffen wir, dass es das war.

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 19:19:13

Merci beaucoup mes amis! J'ai realiseé, que la langue française est essentielle pour d'écrire en code de bash.

Hoffentlich liest jetzt hier kein Franzose mit, denn dessen Sprache beherrsche ich noch weniger als Englisch.

@SleipniR
Du könntest noch versuchen, ob der Rechner aus S5/Soft-Off aufwacht
Habe ich doch schon, s.o.
Manchmal braucht man auch die Kerneloption "hpet=disable"
Das schaue ich mir bei Gelegenheit an.
Außerdem kann VDR dem Shutdown-Skript die Anfangszeit des nächsten Timers übergeben.
Wie geht? Du mir sagen, bitte?

Grüße, Günther

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rtcwake

Beitrag von NAB » 08.02.2015 19:47:29

guennid, zenity hat übrigens eine freundliche grafische Datumseingabe, bei der man dir z.B. "morgen" schon vorauswählen könnte. Für die Uhrzeit gibt's da nix, da ist das Bash-Script genau so komfortabel.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

SleipniR

Re: rtcwake

Beitrag von SleipniR » 08.02.2015 20:57:55

guennid hat geschrieben:
SleipniR hat geschrieben:Du könntest noch versuchen, ob der Rechner aus S5/Soft-Off aufwacht
Habe ich doch schon, s.o.
Ich habe den bisherigen Thread so verstanden, dass S3/Suspend to RAM funktioniert, aber nicht S5/Soft-Off.
guennid hat geschrieben:
SleipniR hat geschrieben:Außerdem kann VDR dem Shutdown-Skript die Anfangszeit des nächsten Timers übergeben.
Wie geht? Du mir sagen, bitte?
Du mußt VDR so konfigurieren, dass er das System herunterfahren kann. In /etc/default/vdr

Code: Alles auswählen

ENABLE_SHUTDOWN=1
Wenn Du die Power-Taste von VDR drückst oder der automatische Shutdown auslöst, werden die Skripte in /usr/share/vdr/shutdown-hooks/ mit fünf Parametern aufgerufen.
Der erste ($1) ist die Zeit des nächsten Timers (übliche Unix-Zeit in UTC) oder "0" falls kein Timer gesetzt ist.
Der zweite ($2) ist die Anzahl der Sekunden bis zum nächsten Timer.
Die restlichen drei spielen für das Setzen der Weckzeit keine Rolle.

Jetzt brauchst Du ein Skript, z.B. /usr/share/vdr/shutdown-hooks/S99.rtcwake, das prüft, ob $1 ungleich null ist, eine Vorlaufzeit (z.B. 300 s) von dem Wert abzieht und dann mit rtcwake die entsprechende Weckzeit setzt. Üblicherweise wird der Rechner danach mit "shutdown -h now" heruntergefahren, bei Suspend to RAM müsste man dann $SHUTDOWNCMD noch entsprechend anpassen.

Die Doku dazu findest Du in /usr/share/doc/vdr/README.Debian.gz unter "Shutdown-Hooks" und in /usr/share/doc/vdr/INSTALL.gz unter "Automatic shutdown".
Einzelheiten können wir dann morgen klären.

guennid

Re: rtcwake

Beitrag von guennid » 08.02.2015 22:11:03

NAB hat geschrieben:...bei der man dir z.B. "morgen" schon vorauswählen könnte.
Das will ich eigentlich gar nicht, ist Pseudo-Bequemlichkeit.
SleipniR hat geschrieben:
guennid hat geschrieben:
SleipniR hat geschrieben:Du könntest noch versuchen, ob der Rechner aus S5/Soft-Off aufwacht
Habe ich doch schon, s.o
.

Ich habe den bisherigen Thread so verstanden, dass S3/Suspend to RAM funktioniert, aber nicht S5/Soft-Off.
Ähm... Verstehe ich jetzt den Sinn dieser Antwort?
SleipniR hat geschrieben:Du mußt VDR so konfigurieren, dass er das System herunterfahren kann. In /etc/default/vdr

Code: Alles auswählen

ENABLE_SHUTDOWN=1
Der ist bereits so konfiguriert.
SleipniR hat geschrieben:Wenn Du die Power-Taste von VDR drückst oder der automatische Shutdown auslöst, werden die Skripte in /usr/share/vdr/shutdown-hooks/ mit fünf Parametern aufgerufen.
Der erste ($1) ist die Zeit des nächsten Timers (übliche Unix-Zeit in UTC) oder "0" falls kein Timer gesetzt ist.
Der zweite ($2) ist die Anzahl der Sekunden bis zum nächsten Timer.
Die restlichen drei spielen für das Setzen der Weckzeit keine Rolle.

Jetzt brauchst Du ein Skript, z.B. /usr/share/vdr/shutdown-hooks/S99.rtcwake, das prüft, ob $1 ungleich null ist, eine Vorlaufzeit (z.B. 300 s) von dem Wert abzieht und dann mit rtcwake die entsprechende Weckzeit setzt. Üblicherweise wird der Rechner danach mit "shutdown -h now" heruntergefahren, bei Suspend to RAM müsste man dann $SHUTDOWNCMD noch entsprechend anpassen.

Die Doku dazu findest Du in /usr/share/doc/vdr/README.Debian.gz unter "Shutdown-Hooks" und in /usr/share/doc/vdr/INSTALL.gz unter "Automatic shutdown".
Einzelheiten können wir dann morgen klären.
Unter /usr/share/vdr/shutdown-hooks/ gibt es hier keine scripte. Es gibt einen einzigen Link und der zeigt in /etc/vdr/shutdown-hooks/ auf eine einzige darin befindliche Datei: s90.custom in der jeglicher Inhalt auskommentiert ist. Bevor ich mich da jetzt für einen neuen vdr-Studiengang einschreibe, bleibe ich vielleicht doch lieber bei meinem kleinen bescheidenen scriptchen. :wink:

Grüße, Günther

SleipniR

Re: rtcwake

Beitrag von SleipniR » 09.02.2015 17:11:41

guennid hat geschrieben:Unter /usr/share/vdr/shutdown-hooks/ gibt es hier keine scripte.
Du mußt ja erst eines schreiben und dort ablegen, damit es beim Shutdown ausgeführt wird. (Bzw. in /etc/vdr/shutdown-hooks/ und nach /usr/share/vdr/shutdown-hooks/ verlinken, wenn Du Wert auf LSB-Konformität legst.)

Bei mir sieht das dann so aus:

Code: Alles auswählen

VORLAUF=300
TIMER=$1

if [ $1 -ne 0 ]; then
        WECKZEIT=$(($TIMER - $VORLAUF))
        rtcwake -l -m no -t $WECKZEIT
else
        exit 0
fi

guennid

Re: rtcwake

Beitrag von guennid » 09.02.2015 18:24:41

Okay, auch nicht schlecht, insbesondere die autmatische Verknüpfung mit dem timer. Ich habe noch ein paar zusätzliche Fragen:
1. Gehe ich recht in der Annahme, dass vdr die eingegebenen timer nach Datum und Uhrzeit sortiert, dh. man sich darauf verlassen kann, dass im 1. Parameter immer der chronologisch nächste timer steckt und zwar auch dann, wenn man timer manuell gesetzt hat?
Ich setze die timer mehr und mehr händisch, es macht absolut keinen Spaß, die offiziellen Ende-Zeiten von ARD und ZDF zu akzeptieren - und zwar nicht nur samstags.
2. Du gibst eine Vorlaufzeit von fünf Minuten. Wenn ich recht erinnere, nimmt vdr das eh als default-Wert für einen timer (5min bevor die eigentliche Sendung beginnt), ergo ist der überflüssig, wenn man diese default-Zeit nicht geändert hat und mit ihr zufrieden ist - richtig?
3. NAB und auch du geben trcwake immer -m no mit. Wenn ich die manpage richtig lese, dann wird dadurch NUR die Aufwachzeit gespeichert, aber der Rechner läuft einfach weiter. Daraus schließe ich, dass ihr später, ja was macht? Meiner einer MUSS in S3, alles andere funktioniert bisher nicht, ein shutdown geht also hier nicht. Wie erreiche ich händisch und nachträglich S3.

Grüße, Günther

SleipniR

Re: rtcwake

Beitrag von SleipniR » 09.02.2015 19:23:01

1. Es wird die Anfangszeit des nächsten aktiven Timers übergeben, also so wie im Timer-Menü aufgeführt.
2. Der Vorlauf bezieht sich auf die Anfangszeit des Timers, nicht auf die Anfangszeit der Sendung. Wenn der Timer 5 min vor Sendungsbeginn gesetzt ist, startet mein Rechner also 10 min vor Sendungsbeginn und 5 min vor der Aufnahme.
3. Ja, mein Skript stellt nur die Weckzeit, der Rechner wird dann per default mit "shutdown -h now" heruntergefahren. Diesen Befehl kann man ändern, wenn man die Variable SHUTDOWNCMD setzt.

Aufwachen aus S3 funktioniert bei mir nicht, also kann ich es nicht ausprobieren. Aber wenn Du wie im Beitrag weiter oben einen Reboot nach dem Aufwecken machen willst, könnte es so funktionieren:

Code: Alles auswählen

VORLAUF=300
TIMER=$1

if [ $1 -ne 0 ]; then
        WECKZEIT=$(($TIMER - $VORLAUF))
        rtcwake -u -m no -t $WECKZEIT
        SHUTDOWNCMD="pm-suspend; sleep 5; reboot"
else
        exit 0
fi
Das Skript speicherst Du so wie es da steht (ohne #!/bin/sh am Anfang) als /usr/share/vdr/shutdown-hooks/S99.rtcwake, die Datei muss nicht ausführbar sein. Außerdem brauchst Du das Paket Debianpm-utils.
Und probier vorher mal aus, ob sich der Rechner mit "pm-suspend" in den S3 schicken läßt und mit dem Netzschalter wieder ordnungsgemäß aufwacht.

guennid

Re: rtcwake

Beitrag von guennid » 10.02.2015 09:47:31

mit dem Netzschalter wieder ordnungsgemäß aufwacht
Aha! So geht das beim Testen. :wink:
Es wird die Anfangszeit des nächsten aktiven Timers übergeben, also so wie im Timer-Menü aufgeführt
Das war womöglich nicht das, was ich wissen wollte. Man kann timer händisch setzen siehe [1], das tue ich immer öfter, insbesondere remote. Muss ich dann auch selbst dafür sorgen, dass, wenn ich mehrere setze, ich die in der zeitlich richtigen Reihenfolge eintrage, oder findet vdr selbst "den nächsten aktiven Timer" für das Aufnehmen und dementsprechend für das suspend-Kommando. Frage hängt auch hiermit zusammen:
vdr-wiki hat geschrieben:Der VDR übersetzt die Sendernummer in Kanal-ID wenn timers.conf neu geschrieben wird.
WANN macht er das Neuschreiben? Muss/kann/soll ich das selbst auslösen?

[1] http://www.vdr-wiki.de/wiki/index.php/Timers.conf

Grüße, Günther

Antworten