Crontab und Stromausfall

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
skorpionius
User
Beiträge: 17
Registriert: Montag 20. Oktober 2014, 11:43

Hallo,
ich habe in die offizielle crontab eine Zeile eingefügt um über eine Bash Datei eine Lampe per GPIO anzuschalten und nach mehreren Std wieder aus. Nach einem Stromausfall innerhalb der definierten Zeit geht diese aber nicht wieder an.
Was kann ich tun?

Gruß
Skorpionius
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@skorpionius: Du mußt halt beim Systemstart prüfen, ob die Lampe an oder aus sein sollte.
skorpionius
User
Beiträge: 17
Registriert: Montag 20. Oktober 2014, 11:43

Hallo ich werde meist nicht da sein wenn das vorkommen kann. Aber spätestens am nächsten Tag mütßte doch alles nach Plan ablaufen oder?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@skorpionius: man kann auch einen cronjob so einrichten, dass er nach einem Neustart ausgeführt wird.
skorpionius
User
Beiträge: 17
Registriert: Montag 20. Oktober 2014, 11:43

toll wie geht das?
BlackJack

@skorpionius: ``man 5 crontab`` und da dann nach `reboot` suchen.
skorpionius
User
Beiträge: 17
Registriert: Montag 20. Oktober 2014, 11:43

kannst du das bitte näher erklären?
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@skorpionius
In der von BlackJack verlinkten man page steht:

Code: Alles auswählen

Instead of the first five fields, one of eight special strings may appear:

string       meaning
@reboot      Run once, at startup.
[/size]Daraus ergibt sich dann ...

Code: Alles auswählen

@reboot /path/to/my/script/switch_light.sh
[/size]

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
skorpionius
User
Beiträge: 17
Registriert: Montag 20. Oktober 2014, 11:43

aber beim reboot werden jobs die schon vor dem reboot begonnen hatten nicht mehr angefasst oder?

ich hab insgesamt 6 jobs in die offizielle crontab eingefügt

00 12 * * * pi /home/pi/rotan.sh
10 12 * * * pi /home/pi/ww1an.sh
20 12 * * * pi /home/pi/ww2an.sh
30 12 * * * pi /home/pi/kw1an.sh
40 12 * * * pi /home/pi/kw2an.sh
00 23 * * * pi /home/pi/blauan.sh

Dabei schaltet jede sh eine Lampe, die zwischen 10 min und 11 Std leuchten. Ist nun z.B. 15 Uhr Stromausfall, wird nur der job 23 Uhr ausgeführt, die anderen erst wieder am nächsten Tag.
BlackJack

@skorpionius: Das ist richtig. In dem Skript bei ``@reboot`` müsstest Du anhand der Uhrzeit ermitteln welche Lampen an und Welche aus sein müssten zu der Zeit zu der es ausgeführt wird und die dann entsprechend schalten.

Falls Du *das* als Skript hast, werden allerdings auch die ganzen anderen Skripte überflüssig, weil Du dann einfach dieses neue Skript zu den Zeiten in der ``crontab`` aufrufen könntest, oder sogar grundsätzlich alle 10 Minuten, dann bräuchtest Du nur einen Eintrag, neben dem ``@reboot`` dafür. Dann könnte das ganze sogar Ontopic werden, denn so etwas würde man eher in einer vernünftigen Programmiersprache denn als Shell-Skript schreiben. :-)
skorpionius
User
Beiträge: 17
Registriert: Montag 20. Oktober 2014, 11:43

Vielen Dank für deine Mühe aber glaube das führt dann zu weit.
Kann ich denn nur die Jobs die ich eingefügt habe in eine Logdatei mitschreibenund mir einmal am Tag als Mail senden?
Ich hatte schon versucht

00 12 * * * pi /home/pi/rotan.sh >>anauslog.txt

Die Datei wird erzeugt aber sie ist leer. :(
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

skorpionius hat geschrieben:aber beim reboot werden jobs die schon vor dem reboot begonnen hatten nicht mehr angefasst oder?
Nein, das werden sie in der Tat nicht. Wenn du so etwas möchtest, dann solltest du dir anacron anschauen.
BlackJack

@/me: Ich glaube da hilft auch Anachron nicht, denn es sollen ja nicht Skripte laufen die *während* des Stromausfalls *nicht* gelaufen sind, sondern solche die *vor* dem Stromausfall *schon mal* liefen.
Antworten