[gelöst] Automatischer Neustart am Sonntag

Bonvie

Neuer User
Mitglied seit
15 Dez 2008
Beiträge
116
Punkte für Reaktionen
1
Punkte
18
Hallo an alle,
ich verwende aktuell folgendes Script, das hier im Forum entstanden ist. Dafür Danke !
Ich würde es aber gerne etwas modifizieren, aber weiß nicht wie. Deswegen die Frage an Euch mit der Bitte, dass einer von Euch evt. eine Lösung kennt.

Kurz das Script startet die FritzBox alle 2 Tage um 02:30 neu. Soweit so gut, dadurch dass es um 2:30 Uhr passiert erfolgt die Zwangstrennung vom Provider auch um diese Zeit (an dem anderen Tag).

Code:
await() {
local day=$((60*60*48))
sleep $(( ($(date -d $(date +%m%d$1%Y) +%s) - $(date +%s) + $day) % $day ))
}
(sleep 600; await 0230; reboot) &

Nun würde ich gerne den Reboot nur noch sonntags durchführen lassen, da ich denke, dass einmal die Woche reicht. Weiß jemand wie ich den Wochentag in der date-Abfrage mitberücksichtige.
Denn die Lösung mit local day=$((60*60*84)) finde ich nicht so glücklich, wenn dann doch mal ein unerwarteter Neustart passiert ist oder notwendig war.
:fecht:

Danke und Gruß
Bonvie
 
Zuletzt bearbeitet:
Code:
wochentag=$(date +%A)

if [ "$wochentag" = 'Sunday' ] ;then

mache dies

else

tue das

fi

Sinnvoll ist bei dir eine dem Reboot vorangestellte While-Schleife, die auf !Sonntag prüft und dann await erneut ausführt. Obiges Beispiel soll nur
Code:
date +%A
vorstellen.
 
Zuletzt bearbeitet:
Danke erstmal aber ich denke es soll in eine andere Richtung gehen:
mit:
Code:
echo $((60*60*24*(7- $(date +%u))))
bekomme ich schon mal die Sekunden bis zum nächsten Sonntag.

Kann mir jemand erklären wie die Übergabe im ersten Script der 0230 funktioniert, bzw. wo die verarbeitet wird. Ich blicke da noch nicht durch.
Ist das wirklich das $1 dann würde ja Monat, Tag, Uhrzeit, Jahr dort stehen :mad:

Aber ich knobel weiter und bin für Tipps offen;)
 
Übrigens würde statt einem Reboot auch ein Reconnect reichen, d.h. statt dem "reboot" ein "dsld -s; dsld -n" nehmen.
 
Ich habs :p und damit ihr es auch testen könnt hier das fertige Script für die debug.cfg
Code:
##########################
# Reboot on Sunday START #
##########################

seconds2sunday() {
#          Seconds2Sunday               -   aktualDate -         modalStartDate
sleep $(($((60*60*24*(7- $(date +%u)))) - ($(date +%s) - $(date -d $(date +%m%d$1%Y) +%s))))
}
(sleep 600; seconds2sunday 0230; reboot) &

##########################
# Reboot on Sunday ENDE  #
##########################

Feedback ist willkommen
Gruß
Bonvie
 
Ist auf der Box date +%u am Sonntag 0? Auf meinem nativen Linux ist es 7 und damit würde der Minuend 0 werden.

Sonst sieht es schon gut aus ;)
 
Danke für den Hinweis,
sicherheitshalber ein Modulu und die Sache sollte behoben sein:

Code:
seconds2sunday() {
#          Seconds2Sunday               -   aktualDate -         modalStartDate
sleep $(($((60*60*24*(7- ($(date +%u)%7)))) - ($(date +%s) - $(date -d $(date +%m%d$1%Y) +%s))))
}
(sleep 600; seconds2sunday 0230; reboot) &

Am Sonntag weiß ich mehr :)
Bonvie
 
So nur der Vollständigkeits halber, es hat alles wie erwartet funktioniert:
Code:
07.02.10 02:31:33 Partition unter USB-FlashDisk-01 eingebunden
1641 root       1424 S   sleep 604102

Hier mal die Befehle für das Einbinden in die debug.cfg:
Code:
debug.cfg holen und auf den USB-Stick legen:
cat /var/flash/debug.cfg > /var/media/ftp/USB-FlashDisk-01/debug.cfg
...........
debug.cfg zurück schreiben und booten:
cat /var/media/ftp/USB-FlashDisk-01/debug.cfg > /var/flash/debug.cfg
reboot

und hier das Script für copy und past:
Code:
##########################
# Reboot on Sunday START #
##########################

seconds2sunday() {
#        Seconds2Sunday                      -  aktualDate  -   modalStartDate
sleep $(($((60*60*24*(7- ($(date +%u) %7)))) - ($(date +%s) - $(date -d $(date +%m%d$1%Y) +%s))))
}
(sleep 600; seconds2sunday 0230; reboot) &

##########################
# Reboot on Sunday ENDE  #
##########################

Gruß
Bonvie
 
mit der neuen Firmware xx.05.05 ist noch ein Fehler aufgefallen oder das Layout hat sich geändert.
Auf jedenfall muss das Jahr nach vorne "%Y%m%d$1"

und hier das Script für copy und past:
Code:
##########################
# Reboot on Sunday START #
##########################

seconds2sunday() {
#        Seconds2Sunday                      -  aktualDate  -   modalStartDate
sleep $(($((60*60*24*(7- ($(date +%u) %7)))) - ($(date +%s) - $(date -d $(date +%Y%m%d$1) +%s))))
}
(sleep 600; seconds2sunday 0230; reboot) &

##########################
# Reboot on Sunday ENDE  #
##########################

Gruß
Bonvie
 
Hallo.
Könnte mir jemand "beibringen", wie ich den Code genau wo reinkopiere, dass meine FB einmal in der Woche bootet - genau sowas suche ich schon lange...
Gruß / Danke
Mountainman
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.