Zeitsynchronisation triggern / sofort durchführen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe das Problem, dass immer etwas Zeit vergeht, bis der Pi nach dem booten die Zeit synchronisiert.

    Diese Zeitspannen sind auch unterschiedlich lang (~1s --> 30min. oder noch länger). Daher möchte ich den Pi dazu bringen die Zeit sofort / jetzt zu synchronisieren - über ein script.

    Nur weiß ich nicht wie das geht.

    Ich habe ntp deinstalliert und den timesyncd aktiviert und in der conf Verschiedene Zeitserver eingerichtet:

    Code
    sudo nano /etc/systemd/timesyncd.conf
    Code
    [Time]
    NTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org
    FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

    Wenn ich den Status abfrage wird mir auch die Funktionsfähigkeit angezeigt, aber ich möchte eben per Befehl eine sofortige Synchronisation durchführen.

    Hat jemand eine Idee, wie ich eine Synchronisation starten kann?

    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

  • Zeitsynchronisation triggern / sofort durchführen? Schau mal ob du hier fündig wirst!

  • Ich hatte gelesen, dass man bei Verwendung von timesyncd ntp lieber deinstallieren soll. Damit sich die Dienste nicht beeinträchtigen.

    Sowohl unter Debian als auch Ubuntu ist timesyncd der (neue) Standard und soll wohl auch sparsamer sein.

    https://www.digitalocean.com/community/tuto…on-on-debian-10

    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

  • Moin Chenda,

    mir ist einiges unklar an deiner Geschichte.

    - ntp ist default nicht installiert.

    - systemd-timesyncd.service ist default eingeschaltet.

    Diese Zeitspannen sind auch unterschiedlich lang (~1s --> 30min. oder noch länger)

    Das kann ich nicht nachvollziehen. War das I-Net immer da?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Diese Zeitspannen sind auch unterschiedlich lang (~1s --> 30min. oder noch länger).

    Code
       Active: active (running) since Mon 2020-08-24 12:23:50 CEST; 2h 10min ago
       ....
    
    Aug 24 12:17:47 raspberrypi systemd[1]: Starting Network Time Synchronization...
    Aug 24 12:17:48 raspberrypi systemd-timesyncd[271]: System clock time unset or j
    Aug 24 12:23:50 raspberrypi systemd[1]: Started Network Time Synchronization.
    Aug 24 12:36:01 raspberrypi systemd-timesyncd[271]: Synchronized to time server

    Wie sind die Ausgaben von:

    Code
    uptime -s
    dmesg -T | grep -i time
    systemd-analyze time

    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hallo zusammen

    und vielen Dank für die bisherigen Ideen / Vorschläge und Antworten.

    Wie sind die Ausgaben von:

    Code
    uptime -s
    dmesg -T | grep -i time
    systemd-analyze time

    ?

    Ich konnte mich leider die letzten Tage nicht darum kümmern.

    Hier die Ausgaben der entsprechenden Befehle.

    Das kann ich nicht nachvollziehen. War das I-Net immer da?

    Das I-Net mag beim starten nicht verfügbar gewesen sein. Der Pi ist mit einem LTE Router verbunden, der die Internetverbindung herstellt. Ist gerade kein LTE Empfang (beim starten), dauert es mit der Synchronisation etwas.

    Das Problem ist, dass meine Zeitstempel in meinen Log Files nicht stimmen (bis zur Synchronisation).

    Das Programm wird durch einen Eintrag in /etc/rc.local beim Systemstart gestartet.

    Daher habe ich in meinen Code / in mein Programm direkt zu Beginn, bevor das Logfile erzeugt wird folgendes eingebaut:

    Code
        char command[50];
        strcpy(command, "sudo systemctl restart systemd-timesyncd.service");
        system(command);

    Leider scheint dies aber nichts zu nützen, denn ich habe am Anfang immer noch falsche Zeitstempel.

    ZB sieht ein Logfile so aus:

    Es gibt einen plötzlichen Sprung von 31.08. 22:50 Uhr zu 01.09. 05:08 Uhr

    Hier brauche ich die echten Zeiten. Ich dachte das mein system Befehl, der den Daemon neustartet den Programmstart solange verzögert, bis die Zeitsynchronisation erfolgt und diese auch erzwingt.

    Was kann ich noch tun?

    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

  • Das I-Net mag beim starten nicht verfügbar gewesen sein. Der Pi ist mit einem LTE Router verbunden, der die Internetverbindung herstellt. Ist gerade kein LTE Empfang (beim starten), dauert es mit der Synchronisation etwas.

    Das Problem ist, dass meine Zeitstempel in meinen Log Files nicht stimmen (bis zur Synchronisation).

    Das ist auch nicht verwunderlich.

    Der Bootablauf der Systemzeit im Kernel ist festgelegt:

    Ganz am Anfang ist die Systemzeit 1.1.1970 00:00 UTC

    Dann wird die letzte bekannte Systemzeit in den Kernel geladen, das ist der Shutdownzeitstempel des letzten Shutdown.

    Und erst dann wird eine "reale" Zeit - nach Verfügbarkeit - herangezogen.

    Die kann von einer RTC, vom GPS, aus einer Funkuhr, oder eben von einem NTP Server stammen.

    Wenn Du als reale Zeitquelle nur einen NTP Server zur Verfügung hast, und eine Internetverbindung kommt nicht zustande, wird auch die Systemzeit im Kernel nicht aktualisiert (und läuf ab der letzten Shutdownzeit weiter).

    Wenn Dir ein genauer Zeitstempel schon vor der zustandegekommenen Internetverbindung wichtig ist, dann hole den aus einer RTC, oder einem Funkuhrenmodul.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Das Programm wird durch einen Eintrag in /etc/rc.local beim Systemstart gestartet.

    ...

    Es gibt einen plötzlichen Sprung von 31.08. 22:50 Uhr zu 01.09. 05:08 Uhr

    Hier brauche ich die echten Zeiten. Ich dachte das mein system Befehl, der den Daemon neustartet den Programmstart solange verzögert, bis die Zeitsynchronisation erfolgt und diese auch erzwingt.

    Was kann ich noch tun?

    Du könntest statt mit der /etc/rc.local, dein Programm mit einer service-unit starten, die u. a. auch folgende Abhängigkeiten haben sollte:

    Code
    Requires=time-sync.target
    Requires=systemd-time-wait-sync.service
    After=time-sync.target
    After=systemd-time-wait-sync.service

    ... denn:

    Zitat

    systemd-time-wait-sync is a system service that delays the start of units that depend on time-sync.target until the system time has been synchronized with an accurate time source by systemd-timesyncd.service.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Ich hatte mal ein ähnliches Problem und habe dann innerhalb der Anwendung selbst nach einem Zeitsprung (positiv oder negativ) alle bereits geloggten Daten mit dem korrigierten Zeitstempel versehen. Den Dienst erst dann zu starten, wenn eine Internetverbindung vorhanden ist, kam nicht infrage.

    Da du eine dauerhafte Internetverbindung hast, wäre die vorgeschlagene Lösung mit systemd mit das Einfachste.

  • Du könntest statt mit der /etc/rc.local, dein Programm mit einer service-unit starten, die u. a. auch folgende Abhängigkeiten haben sollte:

    Code
    Requires=time-sync.target
    Requires=systemd-time-wait-sync.service
    After=time-sync.target
    After=systemd-time-wait-sync.service

    ... denn:

    Hallo rpi444,

    vielen Dank für den Vorschlag. Das klingt doch umsetzbar und sinnvoll. Wie kann ich das mit der service-unit machen?

    Eintrag in rc.local ist ja einfach, aber wie richte ich eine service-unit ein?

    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

  • The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Leider dachte ich es funktioniert nun, muss mich da aber nun eines besseren belehren lassen.

    Meine Service Datei sieht so aus:

    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

  • Leider dachte ich es funktioniert nun, muss mich da aber nun eines besseren belehren lassen.

    Wie sind die Ausgaben von:

    Code
    ls -la /home/pi/Documents/FlexiLog
    ls -la /home/pi/Documents/ScannerLog

    und von:

    Code
    cat /home/pi/Documents/FlexiLog
    cat /home/pi/Documents/ScannerLog

    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • ls -la

    -rwxr-xr-x 1 pi pi 15648 Sep 2 15:35 /home/pi/Documents/FlexiLog

    -rwxr-xr-x 1 pi pi 20008 Jul 20 23:56 /home/pi/Documents/ScannerLog

    cat macht bei einer kompilierten Datei nicht so viel Sinn, oder?

    cat /home/pi/Documents/FlexiLog

    Code
    4p84 ((p00088444  TTTll����PpppDDQ�tdR�td���
                                                                                                                      
                                                                                                                       /lib/ld-linux-armhf.so.3GNUGNU�����T3�c}�CԮV��R    +�b�+��.9�HH�Ȱ@
                                                                               "
     "%&')*�f��sdQw��K���Mv� ��    |�sk�J��+k��#�x�|�
    yIk�Ǹ�L~]�0/t � �{�_y�'6���                               C/N=���{)���4?���}������4K����ʔM�|/1�u�
                                 ��ͬ`�)E�L��
                                           ���P�{�|�v��  ; b��je
    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

  • Kannst du in deiner Unit mal FlexiLog und ScannerLog ersetzen durch Skripte die zb einfach in einer Schleife die aktuelle Uhrzeit ausgeben in eine /tmp-Datei? Skizziert in etwas sowas:

    Bash
    #!/bin/bash
    while true
    do
      date >> $0.log
    done

    Damit kannst du die Unit und deren Funktion von den Programmen trennen.

  • Moin Chenda,

    interessiert dich dein Thema noch?

    Wenn nein, dann mach es zu.

    Geht oben bei "Thema bearbeiten"

    Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Klar interessiert mich mein Thema noch ;)

    Ich habe das Problem übrigens erkannt und gelöst und teile euch noch kurz die Ursache / Lösung mit.

    Das Problem ist, dass ich einen unendlichen Service starte: FlexiLog. Dadurch, dass dieser nicht stoppt läuft der zweite der mit ExecStartPost gestartet werden soll: ScannerLog in einen Timeout.

    ExecStart=/home/pi/Documents/FlexiLog --> stoppt nicht, sondern läuft bis der Pi herunterfährt

    ExecStartPost=/home/pi/Documents/ScannerLog

    Die Lösung ist also einfach:

    Ich habe für jedes Script (ScannerLog und FlexiLog) einen eigenen Service erstellt.

    Meine Raspis

    RPi 2 B Rev 1.1 mit Raspbian 10.7 (buster): pihole

    RPi 3 B Rev 1.2 mit Raspbian 10.1 (buster): Logging Machine

    RPi 3 B Rev 1.2 mit Raspbian 9.13 (stretch): RetroPie

    RPi 3 B+ Rev 1.3 mit Raspbian 10.1 (buster): Logging Machine 2

    RPi 4 B Rev. 1.1 (4GB): noch offen

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!