staging.inyokaproject.org

Abweichung der Systemuhr anzeigen

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

Schrödingers_Katze

Anmeldungsdatum:
11. März 2010

Beiträge: 83

Hallo,

da ich beispielsweise für Radioaufnahmen darauf angewiesen bin, zu wissen, wie sehr die Systemuhr von der wahren Zeit abweicht, habe ich mir gedacht, ich lasse mir das komfortabel anzeigen. Dazu fragt 'ntp_offset_backend.sh' etwa alle 20 Minuten in Braunschweig nach und schreibt die Daten in eine Datei, aus der sie 'ntp_offset.sh' ausliest und ein Icon im GNOME-Panel platziert, das beim Daraufzeigen die Abweichung als Tooltip anzeigt. Bei mehr als 100 ms Abweichung wird ein Warnschild angezeigt; außerdem wird ein Ausfall der Internetverbindung gemeldet.

Vielleicht nützt es ja wem.

Das Skript benötigt neben Standardwerkzeugen (sed, cut, grep, bc, sleep, find, mkdir) Folgendes:

  • zenity

  • ntpdate

  • ein laufender ntp-Server ist sinnvoll

Außerdem müssen beide Dateien im Verzeichnis ~/bin liegen.

Idealerweise wird beim Login die 'ntp_offset.sh' per GNOME-Autostarter ausgeführt. Diese startet daraufhin das Backend.

ntp_offset.sh (2.6 KiB)
Frontend, das der Anzeige dient
Download ntp_offset.sh
ntp_offset_backend.sh (1.2 KiB)
Backend, das die Daten sammelt
Download ntp_offset_backend.sh

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21863

Zwei Anmerkungen zum Backend:

  • Die Shebang fehlt - ein Schönheitsfehler 😀

  • die Randomize-Funktion scheint mir etwas überdimensiert, man kann die auch ohne Endlosschleife bauen:

    1
    $(($RANDOM%1000)+998)=myrandom
    

    (Zufallszahl von 1-1000 wird zu 998 addiert)

Schrödingers_Katze

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 83

Nun ist die Shebang drin. 😀

Auf den guten alten Modulo-Operator hätte ich auch von selbst kommen können, denn hier ist ja nicht die Gefahr eines Integer-Überlaufs gegeben. Allerdings hast du die Zuweisung falsch herum aufgeschrieben, und die Klammerung stimmt auch nicht. Ich habe an der Stelle, wo vorher der Funktionsaufruf

1
randomize

war, mittlerweile Folgendes stehen:

1
POLLING_INTERVAL=$(( $RANDOM % 1000 + 998 ))

, und das funktioniert wie gewünscht, so dass ich auch ohne eine Extra-Funktion auskomme.

Danke für deine Anmerkungen.

Nebenbei hatte ich im Frontend übersehen, dass das Backend separat gekillt werden muss, wenn das Frontend sich mangels Internetverbindung verabschiedet – das ist nun nachgeholt.

ntp_offset.sh (2.7 KiB)
Frontend, das der Anzeige dient
Download ntp_offset.sh
ntp_offset_backend.sh (1.1 KiB)
Backend, das die Daten sammelt
Download ntp_offset_backend.sh

broseman

Anmeldungsdatum:
15. Februar 2005

Beiträge: Zähle...

Nur für mein Verständnis: Ubuntu bietet doch von Haus aus die Möglichkeit, die eigene Systemzeit per NTP-Server abzugleichen. Die Abweichungen sollte dann nicht sonderlich groß sein. Warum wird dein Skript dennoch benötigt?

Gruß

broseman

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21863

NTPd korrigiert die Systemzeit im Fall einer Abweichung nicht auf einen Schlag, sondern in kleinen Schritten. So sollen die Zeitangaben in Logfiles konsistent gehalten werden. Das ist in den meisten Anwendungsfällen wünschenswert, nicht jedeoch wenn man sekundengenaue Aufnahmen (zB aus einem Webradio) wünscht.

broseman

Anmeldungsdatum:
15. Februar 2005

Beiträge: Zähle...

Danke

Antworten |