Hallo, ich habe mal eine Grundlegende Frage zum Thema Uhrzeit: Ich habe auf meinem System die Systemzeit und die Hardwarezeit (den Unterschied verstehe ich schon nicht) nach meiner lokalen Zeit eingestellt. In yast habe ich dann die Zeitzone auf Europe/Berlin gestellt. Mails, die über den Server verschickt werden, tragen die richtige Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück. Woran kann das liegen? grüße eric° zeitstrahlen / agentur für neue medien festanschluss: 0 26 21 - 18 83 59 funktelefon: 01 77 - 9 11 13 34 elektropost: eric@zeitstrahlen.de http://www.zeitstrahlen.de
Hallo, Am Freitag, 12. April 2002 00:47 schrieb eric berthold:
ich habe mal eine Grundlegende Frage zum Thema Uhrzeit:
Mails, die über den Server verschickt werden, tragen die richtige Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück.
Wäre es nicht >zeit<, die Uhrproblematik einmal umfassend zu
dokumentieren? Es gibt drei Uhren: die Hardware-Clock, die
Systemzeit und den Fremden im Netz. Jeder hat eine Zeitangabe
und eine Zeitzone. Die Übergabeformalitäten stecken in Optionen
wie '-u' (`hwclock').
Im Header Deiner Mail steht
Date: Fri, 12 Apr 2002 00:47:08 +0200
(Da tauchen die zwei Stunden auf.) Vielleicht haben die Amis
das irgendwo dokumentiert, denn die leben in sechs Zeitzonen.
Ich habe noch nichts darüber gelesen.
Gruß
Bertram
--
Bertram Scharpf
Hallo,
Bertram Scharpf
Hallo,
Am Freitag, 12. April 2002 00:47 schrieb eric berthold:
ich habe mal eine Grundlegende Frage zum Thema Uhrzeit:
Mails, die über den Server verschickt werden, tragen die richtige Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück.
Wäre es nicht >zeit<, die Uhrproblematik einmal umfassend zu dokumentieren? Es gibt drei Uhren: die Hardware-Clock, die Systemzeit und den Fremden im Netz. Jeder hat eine Zeitangabe und eine Zeitzone. Die Übergabeformalitäten stecken in Optionen wie '-u' (`hwclock').
Im Header Deiner Mail steht
Date: Fri, 12 Apr 2002 00:47:08 +0200
(Da tauchen die zwei Stunden auf.) Vielleicht haben die Amis das irgendwo dokumentiert, denn die leben in sechs Zeitzonen. Ich habe noch nichts darüber gelesen.
Es gibt nur *eine* allgemeinverbindliche Zeit auf dieser Erde, dies ist UTC (Universial Time Coordinated), per Konvention und Tradition ist dies die lokale Zeit in Greenwich (GB). In früheren Zeiten wurde die Zeit definiert durch die Winkelveränderung der Sonne zum Beobachtungsstandort, als verbindliches Maß hat man den Kulminationspunkt der Sonne über der britischen Admiralität gewählt (diese war in Greenwich). Mit anderen Worten, High Noon am 21.Juni in Greenwich war 12.00 Uhr mittags. Für den Rest des Jahres wurde dann mechanisch gemessen unter der Berücksichtigung der mechanischen Abweichungen. Von einem Hig Noon zum nächsten waren es 8744'24 Stunden, was natürlich zu Fehlern führte, die in Korrekturtafeln berechnet werden konnten. Da die Erde in Längengrade eingeteilt ist und der Kulminationspunkt auf dem Längengrad überall gleich ist, konnte man die Ortszeit in Relation zu Greenwich berechnen, daher die Zeitangabe Greenwich Mean Time (GMT) (wörtlich Mittelwert der Zeit in Greenwich). Heute wird die Zeit durch den Zerfall des Cäsiums bestimmt. Bei der Umstellung von GMT uaf UTC (ich glaube, das war 1972, ich müsste jetzt in meinen Nautischen Jahrbüchern nachchlagen) wurde als Nullpunkt 0.00 Uhr in Greenwich bestimmt. Aus Tradition und Gewohnheit hat man die Einteilung in Zeitzonen (gleiche Zeit auf einem Längengrad) beibehalten. Die Ortszeit einer Zeitzone bezieht sich aber immer noch auf UTC. Nun zum Computer. Auf dem Motherboard befindet sich ein oszillierender Quarz, der von der Batterie erregt wird, im Grunde eine billige Quartzuhr ohne Display. Die Oszillation wird gezählt, je nach Quartz ist dann nach 14 - 16 Mio Oszillationen eine Sekunde vergangen. So dass die Zeit definiert werden kann. Leider sind die Quarze von mangelhafter Qualität, so dass die Oszillation nicht konstant ist, sondern variiert, was zu fehlerhafter Zeitberechnung führt. Zeitanzeige ist die Addition von Oszillationen, es kann also eine willkürliche Nullzeit definiert werden (z.B. jetzt ist 12:00) ab jetzt wird die Zeit fortlaufend ab Nullzeit angezeigt. Dieses ist die sogenannte Hardware Clock (HWC), oder Bios Uhr. Einige Computer-Betriebssysteme greifen zur Darstellung der Zeit auf die HWC zurück, daher wird dann aus Bequemlichkeit die HWC auf die lokale Zeitangabe eingestellt. Der Linux Kernel berechnet seine eigene Zeit, die Systemzeit (Stichwort BogoMips), nutzt aber bei Systemstart die HWC als Ausgangszeit. Es hat sich zur Gepflogenheit entwickelt, die HWC auf UTC einzustellen und die Systemzeit auf lokale Zeit, dadurch wird es dem System möglich, unterschiedliche Zeitangaben zu berücksichtigen. Die Zeitangabe oben Date: Fri, 12 Apr 2002 00:47:08 +0200 besagt also, dass die Ortszeit 00:47:08 2 Stunden vor UTC liegt, UTC wäre also Thu, 11 Apr 2002 22:47:08 -Dieter -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter@schevolution.com http://www.schevolution.com/tour
Hallo nochmal,
so habe ich mir das vorgestellt: kaum rühr' ich
dran, schon geht es nicht mehr.
Aber erstmal danke für die ausführlichen Antworten!
Ich habe meine Hardware-Uhr auf UTC umgestellt, läuft
soweit auch prima, nur: Nach einem Neustart geht die
Uhr um zwei Stunden nach.
In der Datei `/etc/adjtime' steht vor dem Herunterfahren
in der letzten Zeile: "UTC". Nach dem Neustart steht
da: "LOCAL". Klar, daß dann die Uhr 2 Stunden nachgeht.
Was muß ich ändern, damit das "UTC" in `/etc/adjtime'
erhalten bleibt?
Danke vorab,
Bertram
____________________
Hier ein paar Programmausgaben:
VOR dem Neustart:
# netdate -l 10000 tcp ptbtime1.ptb.de ptbtime2.ptb.de
Trying 192.53.103.103...
ptbtime1.ptb.de -0.490 Fri Apr 12 18:03:36.000
Trying 192.53.103.104...
ptbtime2.ptb.de -0.708 Fri Apr 12 18:03:36.000
Trying 192.53.103.103...
ptbtime1.ptb.de +0.079 Fri Apr 12 18:03:37.000
# hwclock -r
Fre 12 Apr 2002 18:03:46 CEST -0.129561 Sekunden
# hwclock -wu
# hwclock -r
Fre 12 Apr 2002 18:03:52 CEST -0.709723 Sekunden
# date
Fre Apr 12 18:03:54 CEST 2002
# cat /etc/adjtime
-1504.953369 1018627428 0.000000
1018627428
UTC
#
NACH dem Neustart:
# hwclock -r
Fre 12 Apr 2002 16:11:07 CEST -0.214381 Sekunden
# date
Fre Apr 12 16:11:08 CEST 2002
# cat /etc/adjtime
-1504.953369 1018620536 0.000000
1018627428
LOCAL
#
--
Bertram Scharpf
On Fri, Apr 12, 2002 at 04:12:02PM +0200, Bertram Scharpf wrote:
Ich habe meine Hardware-Uhr auf UTC umgestellt, läuft soweit auch prima, nur: Nach einem Neustart geht die Uhr um zwei Stunden nach.
Was muß ich ändern, damit das "UTC" in `/etc/adjtime' erhalten bleibt?
Du hast vergessen, dem Bootvorgang deine Entscheidung mitzuteilen. /etc/rc.config: GMT="--localtime" => GMT="-u" Peter
Hallo,
Danke nochmal für Eure Antworten. Jetzt hab's sogar
ich verstanden. Ich fasse zusammen. (Wenn Fehler drin
sind, verbessere man mich.)
Suchbegriffe:
Systemzeit Hardwarezeit Zeitzonen Europe/Berlin
system time hardware clock time zone
UTC GMT hwclock date
uhr stellen uhrzeit einstellen
netdate PTB Braunschweig
I. Hardwareuhr
Im Rechner eingebaut ist eine Quarzuhr, die sich
im wesentlichen nicht unterscheidet von dem, was
z. B. in einer »swatch« steckt.
Unter Windows wird schlicht diese Uhr angezeigt,
und im März/im Oktober wird sie um eine Stunde
vor/zurückgestellt.
Diese Uhr sehe ich auch im BIOS-Menü laufen, wenn
ich vor dem Booten `Del'/`Strg-Alt-Esc' drücke.
II. Systemuhr
Die Genauigkeit dieser Quarzuhr ist vergleichsweise
schlecht gegenüber der des Prozessors. Unsere Freunde
in Redmond sind bekanntermaßen mit der schlampigen
Lösung zufrieden, aber Linux zählt selber eine Zeit
mit, die Systemzeit. Diese Uhr kann angezeigt und
gestellt werden mit dem Befehl `date'.
Die Systemzeit enthält nicht nur Datum, Stunden,
Minuten und Sekunden. Sie enthält auch eine Information
über die Zeitzone, in der sich der Rechner befindet.
Bei der Kommunikation im Netz können somit zwei Zeitpunkte
in Stuttgart und in Sydney verglichen werden. Die
zusätzliche Information ist die _Abweichung in Stunden_
von der Zeit auf dem nullten Längengrad: der "Greenwich
Mean Time" (GMT), unter Unix genannt: "Universial Time
Coordinated" (UTC). Mit der Option `--utc' oder `-u'
kann man sich diese Zeit angeben lassen. Das sieht dann
so aus:
$ date
Fre Apr 12 21:53:54 CEST 2002
$ date -u
Fre Apr 12 19:53:57 UTC 2002
$
III. Stellen der Hardwareuhr
Die Hardwareuhr kann nun entweder in meiner Zeitzone
laufen, so wie meine Armbanduhr, oder sie wird auf
UTC gestellt. Die Information, welcher Zeitzone
sie angehört, ist in der Hardwareuhr nicht enthalten.
Daher ist es besser für Rechner, auf denen auch ein Windows
läuft, sie auf meine Zeitzone einzustellen.
Unter Linux stellt und liest man die Hardwareuhr, indem
man die Systemzeit auf die Hardwareuhr überträgt und
umgekehrt. Dies macht der Befehl `hwclock'. Anzeigen lassen
kann man sich die Hardwareuhr auch mit der Option `-r'.
# hwclock -r
Fre 12 Apr 2002 22:05:56 CEST -0.397095 Sekunden
#
Beim Übertragen Hardwareuhr->Systemzeit und umgekehrt
muß nun angegeben werden, ob die Hardwareuhr als lokale
Zeit oder als UTC (GMT) aufgefaßt werden soll. Dies
geschieht wieder mit der Option `--utc' oder `-u'.
Beim Bootvorgang wird die Systemzeit von der Hardwareuhr
her gestellt, ebenfalls mit dem Befehl `hwclock'. Auch
hier muß natürlich angegeben werden, wie die Hardwareuhr
aufgefaßt wird. Das Verfahren, `hwclock' seine Parameter
beizubringen, ist distributionsabhängig. Bei SuSE trägt
man in `/etc/rc.config' ein:
GMT="-u"
statt
GMT="--localtime"
oder man läßt YAST dies machen.
Die Informationen, wie die Hardwareuhr von der Systemuhr
abweicht, speichert `hwclock' in `/etc/adjtime'. Darin
steht nicht nur, als welche Zeitzone sie aufgefaßt wird.
Beim Herunterfahren des Systems wird die Abweichung
zur Systemzeit gemessen, ein Korrekturfaktor errechnet,
und dieser beim nächsten Hochfahren berücksichtigt, wenn
aus der Hardwareuhr wieder eine Systemzeit gemacht wird.
IV. Stellen der Systemzeit möglichst genau
Die Physikalisch-Technische Bundesanstalt in Braunschweig
betreibt eine Cäsium-Uhr. Deren Zeit strahlt sie aus
z. B. als Funksignal, das von den inzwischen sehr verbreiteten
Funkuhren empfangen wird. Außerdem verschickt die Anstalt
das Zeitsignal im Netz. Von Linux wird das gelesen mit
# netdate tcp ptbtime1.ptb.de ptbtime2.ptb.de
Nun ist die Systemuhr gestellt; um die Zeit auch über
den nächsten Reboot hinaus zu retten, und um verquere
Korrekturfaktoren in `/etc/adjust' zu vermeiden, sollte
man noch die Hardwareuhr danach stellen.
# hwclock --systohc --utc
Wer ISDN hat, ist vielleicht schon einmal auf den Gedanken
gekommen, seine Uhr nach der dort übertragenen Zeit zu
stellen. Das geht auch. Aber: die ISDN-Zeit kann in der
Genauigkeit mit der aus Braunschweig nicht mithalten.
Soweit meine ich, war dies das wichtigste. Ich hoffe, es
sind keine Fehler drin.
Bertram
--
Bertram Scharpf
Hallo Bertram, Am Freitag, 12. April 2002 22:39 schrieb Bertram Scharpf:
Danke nochmal für Eure Antworten. Jetzt hab's sogar ich verstanden. Ich fasse zusammen. (Wenn Fehler drin sind, verbessere man mich.)
Und Dir danke für die schöne Zusammenfassung - habe ich doch gleich in mein Archiv übernommen. Helga -- ~~~~~~~~~~~~~~~~~~~~~~Wer macht mit?~~~~~~~~~~~~~~~~~~~~~ Das dt. Dokumentationsprojekt von OpenOffice.org sucht Mitstreiter # Projekt-Einstieg: http://lang.openoffice.org/de # Mailingliste: http://lang.openoffice.org/de/about-mailinglist.html
Hallo, On Fri, 12 Apr 2002, Bertram Scharpf wrote:
Die Systemzeit enthält nicht nur Datum, Stunden, Minuten und Sekunden. Sie enthält auch eine Information über die Zeitzone, in der sich der Rechner befindet.
Nicht ganz. Die Systemzeit ist einfach ein Zaehler, der die
Sekunden seit dem 1.1.1970 0:0:00 zaehlt. Alle anderen Infos
koennen und werden durch die Funktionen gmtime/localtime und
der Angabe der Zeitzone (z.B. CEST) berechnet. Die Zeitzonen
werden in den Dateien in /usr/share/zoneinfo definiert (diese
sind allerdings in ein binaeres Format "kompiliert" auslesen
kann man diese teilweise mittels 'zdump -v [ZEITZONE]'.
Die Sommerzeit ist dabei "einfach" nur ein "Flag" das ggfs.
gesetzt ist (siehe die Def. von 'struct tm' in 'man localtime'.
Ob bzw. wann das flag zu setzen ist, wird in der Zoneninfo-Datei
festgelegt.
Weiterhin fehlt noch komplett der Hinweis auf die Schaltsekunden
und auf die Umgebungsvariable 'TZ'...
==== Aus glibc-<version>/timezone/leapseconds ====
# The International Earth Rotation Service periodically uses leap seconds
# to keep UTC to within 0.9 s of UT1
# (which measures the true angular orientation of the earth in space); see
# Terry J Quinn, The BIPM and the accurate measure of time,
# Proc IEEE 79, 7 (July 1991), 894-905.
# There were no leap seconds before 1972, because the official mechanism
# accounting for the discrepancy between atomic time and the earth's rotation
# did not exist until the early 1970s.
====
Die Schaltsekunden werden verwendet, wenn man die Zeitzonen 'right/'
verwendet (ich verwende hier z.B. TZ="right/Europe/Berlin". Seit 1972
wurden immerhin 22 Schaltsekunden eingefuegt (siehe die Ausgabe von
'zdump -v right/Europe/Berlin').
IIRC wurde das Thema vor einiger Zeit in der c't von Andreas Jaeger
IV. Stellen der Systemzeit möglichst genau # netdate tcp ptbtime1.ptb.de ptbtime2.ptb.de
Hier fehlt 'localhost' als letzter host... Siehe 'man netdate'. -dnh -- It takes a million monkeys at typewriters to write Shakespeare, but only a dozen monkeys at computers to run Network Solutions. -- Patrick Delahanty
Hallo, Am Samstag, 13. April 2002 06:42 schrieb David Haller:
On Fri, 12 Apr 2002, Bertram Scharpf wrote:
[...]
Nicht ganz. [...]
Das sind die ganzen komplizierten Einzelheiten, mit denen
ich potentielle Leser nicht verschrecken wollte.
Trotzdem vielen Dank für die Information.
Bertram
--
Ich habe kein Zeit, Dir einen kurzen Brief zu
schreiben, also schreibe ich Dir einen langen.
- Goethe zu seiner Schwester
--
Bertram Scharpf
Hallo David, Am 13. Apr 2002, 06:42 Uhr schrieb David Haller:
Die Schaltsekunden werden verwendet, wenn man die Zeitzonen 'right/' verwendet (ich verwende hier z.B. TZ="right/Europe/Berlin". Seit 1972 wurden immerhin 22 Schaltsekunden eingefuegt (siehe die Ausgabe von 'zdump -v right/Europe/Berlin').
IIRC wurde das Thema vor einiger Zeit in der c't von Andreas Jaeger
(einem der glibc-Entwickler, u.a. eben auch am relevanten Code) erklaert... $ TZ="right/Europe/Berlin" date; TZ="Europe/Berlin" date Sat Apr 13 06:42:00 CEST 2002 Sat Apr 13 06:42:22 CEST 2002
Da frage ich mich allerdings, was denn nun "richtig" ist: vergleiche ich die Ausgaben beider Befehle mit dem, was meine "Atomuhr" (richtiger wäre "Uhr mit Empfänger der PTB-Zeit") anzeigt, wäre danach der zweite Wert - sprich TZ="Europe/Berlin" - korrekt. Irgendwie kann ich mir nicht vorstellen, daß die PTB über ihren Sender im Taunus was flasches verbreitet !?!? Gruß Rudi -- Computers are useless - they can only give you answers. [Pablo Picasso]
* Rudolf Buerger schrieb am 14.Apr.2002:
Am 13. Apr 2002, 06:42 Uhr schrieb David Haller:
Die Schaltsekunden werden verwendet, wenn man die Zeitzonen 'right/' verwendet (ich verwende hier z.B. TZ="right/Europe/Berlin". Seit 1972 wurden immerhin 22 Schaltsekunden eingefuegt (siehe die Ausgabe von 'zdump -v right/Europe/Berlin').
IIRC wurde das Thema vor einiger Zeit in der c't von Andreas Jaeger
(einem der glibc-Entwickler, u.a. eben auch am relevanten Code) erklaert... $ TZ="right/Europe/Berlin" date; TZ="Europe/Berlin" date Sat Apr 13 06:42:00 CEST 2002 Sat Apr 13 06:42:22 CEST 2002
Da frage ich mich allerdings, was denn nun "richtig" ist: vergleiche ich die Ausgaben beider Befehle mit dem, was meine "Atomuhr" (richtiger wäre "Uhr mit Empfänger der PTB-Zeit") anzeigt, wäre danach der zweite Wert - sprich TZ="Europe/Berlin" - korrekt. Irgendwie kann ich mir nicht vorstellen, daß die PTB über ihren Sender im Taunus was flasches verbreitet !?!?
Du mußt anschließen die Uhr wieder richtig stellen, und damit leben, daß die Zeiten der Dateien bis zu 22 Sekunden falsch sind. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
Hallo Bernd, Am 14. Apr 2002, 13:57 Uhr schrieb Bernd Brodesser:
* Rudolf Buerger schrieb am 14.Apr.2002:
Am 13. Apr 2002, 06:42 Uhr schrieb David Haller:
$ TZ="right/Europe/Berlin" date; TZ="Europe/Berlin" date Sat Apr 13 06:42:00 CEST 2002 Sat Apr 13 06:42:22 CEST 2002
Da frage ich mich allerdings, was denn nun "richtig" ist: vergleiche ich die Ausgaben beider Befehle mit dem, was meine "Atomuhr" (richtiger wäre "Uhr mit Empfänger der PTB-Zeit") anzeigt, wäre danach der zweite Wert - sprich TZ="Europe/Berlin" - korrekt. Irgendwie kann ich mir nicht vorstellen, daß die PTB über ihren Sender im Taunus was flasches verbreitet !?!?
Du mußt anschließen die Uhr wieder richtig stellen, und damit leben, daß die Zeiten der Dateien bis zu 22 Sekunden falsch sind.
Muß ich das jetzt so interpretieren: - TZ="Europe/Berlin" = PTB-Zeit = "offizielle" Zeit = "falsche" Zeit - TZ="right/Europe/Berlin" = "richtige" Zeit. Kann ich mir irgendwie nicht vorstellen... Gruß Rudi -- Und dann üben wir den richtigen Gebrauch der Kleinbuchstabengroßmachtaste. [Dieter Bruegmann]
* Rudolf Buerger schrieb am 14.Apr.2002:
Muß ich das jetzt so interpretieren: - TZ="Europe/Berlin" = PTB-Zeit = "offizielle" Zeit = "falsche" Zeit - TZ="right/Europe/Berlin" = "richtige" Zeit.
TZ ist eine Einstellung von Linux, die offizielle Zeit hat da erst mal nichts mit zu tun. Siehe auch meine Antwort auf Bernhards Mail. Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: http://localhost/doc/sdb/de/html/index.html | mit Apache: http://localhost/doc/sdb/de/html/key_form.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2
On Sat, 13 Apr 2002 at 06:42 (+0200), David Haller wrote:
==== Aus glibc-<version>/timezone/leapseconds ==== # The International Earth Rotation Service periodically uses leap seconds # to keep UTC to within 0.9 s of UT1 # (which measures the true angular orientation of the earth in space); see # Terry J Quinn, The BIPM and the accurate measure of time, # Proc IEEE 79, 7 (July 1991), 894-905. # There were no leap seconds before 1972, because the official mechanism # accounting for the discrepancy between atomic time and the earth's rotation # did not exist until the early 1970s. ====
Zu dem Thema habe ich eine schöne URL: http://www.ptb.de/de/org/4/43/432/ssec.htm Laut dieser Angabe wurden seit 1970 22 Sekunden _eingefügt_, d. h. die Zeit mit Schaltsekunden muss "mehr" sein wie die ohne.
Die Schaltsekunden werden verwendet, wenn man die Zeitzonen 'right/' verwendet (ich verwende hier z.B. TZ="right/Europe/Berlin". Seit 1972 wurden immerhin 22 Schaltsekunden eingefuegt (siehe die Ausgabe von 'zdump -v right/Europe/Berlin').
IIRC wurde das Thema vor einiger Zeit in der c't von Andreas Jaeger
(einem der glibc-Entwickler, u.a. eben auch am relevanten Code) erklaert...
Weißt Du zufällig die Ausgabe noch? Ich hoffe, das war letztes Jahr, weil davon habe ich die c'ts auf CD-ROM (und die von dem habe ich sowieso noch als Papier).
$ TZ="right/Europe/Berlin" date; TZ="Europe/Berlin" date Sat Apr 13 06:42:00 CEST 2002 Sat Apr 13 06:42:22 CEST 2002
Und genau das kann nicht stimmen!
Die Zeit mit Schaltsekunden muss mehr sein, also in dem Fall
Sat Apr 13 06:42:22 CEST 2002, d. h. die Ausgabe, die mit
TZ="Europe/Berlin" erzeugt wurde. Also muss die Zeit mit "right" die
_ohne_ Schaltsekunden sein.
Ein kleines C-Programm soll nun klären, welchen Wert die
time()-Funktion zurückliefert:
,----[ zeit.c ]-
| #include
* Bernhard Walle schrieb am 14.Apr.2002:
On Sat, 13 Apr 2002 at 06:42 (+0200), David Haller wrote:
Laut dieser Angabe wurden seit 1970 22 Sekunden _eingefügt_, d. h. die Zeit mit Schaltsekunden muss "mehr" sein wie die ohne.
[...]
$ TZ="right/Europe/Berlin" date; TZ="Europe/Berlin" date Sat Apr 13 06:42:00 CEST 2002 Sat Apr 13 06:42:22 CEST 2002
Und genau das kann nicht stimmen!
Die Zeit mit Schaltsekunden muss mehr sein, also in dem Fall Sat Apr 13 06:42:22 CEST 2002, d. h. die Ausgabe, die mit TZ="Europe/Berlin" erzeugt wurde. Also muss die Zeit mit "right" die _ohne_ Schaltsekunden sein.
Nein, es ist schon richtig was David geschrieben hat. Die Systemuhr sagt es sind 1018672942 s seit dem 1.1.1970 0:00 Uhr UTC vergangen. Wenn man keine Schaltsekunden brücksichtigt, dann ist das der 13. Apr 2002 6:42:22 Mitteleuropäischer Sommerzeit. Wenn man aber die Schaltsekunden berücksichtigt, dann ist es erst 6:42:00, denn die 22 Sekunden werden für die Schaltsekunden verbraten, die es zwichendurch gegeben hat. Durch die Änderung von $TZ änderst Du nichts an der Systemzeit, und die besteht aus Sekunden seit 1.1.1970. Wenn Du auf right umstellst, dann mußt Du auch die Uhrzeit verstellen, denn die stand ja auf der richtigen aktuellen Zeit, nur die Vergangenheit ist falsch. Bei der Umstellung wird die Vergangenheit aber nicht verändert, sonder die aktuelle Zeit, die ja eigentlich richtig ist. [Bernhards kleines C-Programm]
Die Ausgabe (unabhängig von der $TZ-Variablen):
berwal [~] $ zeit UTC: 18:59:16
date mit Europe/Berlin : Son Apr 14 20:59:16 CEST 2002
date mit right/Europe/Berlin: Son Apr 14 20:58:54 CEST 2002
Auch hier, genau 22s
D. h. time() liefert immer die Zeit zurück, die ohne "right" generiert wurde, also die, die mit der offiziellen PTB-Zeit übereinstimmt (-> Funkuhr), also die Zeit _mit_ Schaltsekunden.
Weil die Uhr so gestellt wurde. Die offizielle PTB-Zeit gibt ja nicht Sekunden seit 1970 an, sondern die Zeit in Jahr, Monat, Tag, Stunde, Minute und Sekunde. Wenn Du Deine Systemzeit danach einstellst, dann rechnet Linux aus, wieviele Sekunden seit 1970 vergangen sind und stellt seinen internen Zähler danach. Da $TZ auf Europe/Berlin steht geschieht dies ohne Schaltsekunden. Wenn Du jetzt $TZ veränderst bekommst Du natürlich eine falsche Zeit. Du müßtest mit verändertem $TZ die Zeit abhohlen und die Systemzeit danach stellen lassen. Dann klappt das auch. Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: http://localhost/doc/sdb/de/html/index.html | mit Apache: http://localhost/doc/sdb/de/html/key_form.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2
* Bernhard Walle schrieb am 14.Apr.2002:
On Sat, 13 Apr 2002 at 06:42 (+0200), David Haller wrote:
Laut dieser Angabe wurden seit 1970 22 Sekunden _eingefügt_, d. h. die Zeit mit Schaltsekunden muss "mehr" sein wie die ohne.
[...]
$ TZ="right/Europe/Berlin" date; TZ="Europe/Berlin" date Sat Apr 13 06:42:00 CEST 2002 Sat Apr 13 06:42:22 CEST 2002
Und genau das kann nicht stimmen!
Die Zeit mit Schaltsekunden muss mehr sein, also in dem Fall Sat Apr 13 06:42:22 CEST 2002, d. h. die Ausgabe, die mit TZ="Europe/Berlin" erzeugt wurde. Also muss die Zeit mit "right" die _ohne_ Schaltsekunden sein.
Nein, es ist schon richtig was David geschrieben hat. Die Systemuhr sagt es sind 1018672942 s seit dem 1.1.1970 0:00 Uhr UTC vergangen. Wenn man keine Schaltsekunden brücksichtigt, dann ist das der 13. Apr 2002 6:42:22 Mitteleuropäischer Sommerzeit. Wenn man aber die Schaltsekunden berücksichtigt, dann ist es erst 6:42:00, denn die 22 Sekunden werden für die Schaltsekunden verbraten, die es zwichendurch gegeben hat.
Durch die Änderung von $TZ änderst Du nichts an der Systemzeit, und die besteht aus Sekunden seit 1.1.1970. Wenn Du auf right umstellst, dann mußt Du auch die Uhrzeit verstellen, denn die stand ja auf der richtigen aktuellen Zeit, nur die Vergangenheit ist falsch. Bei der Umstellung wird die Vergangenheit aber nicht verändert, sonder die aktuelle Zeit, die ja eigentlich richtig ist.
Ui Ui Ui! Da habe ich ja nen wunden Punkt getroffen. Dabei wollte ich eigentlich nur wissen, wie ich auf meinem Server die Uhrzeiten und Zeitszonen einstelle, damit alles richtig tickt.... Viel Spaß noch! Eric
Am 14. Apr 2002, 23:04 Uhr schrieb Bernd Brodesser:
Du müßtest mit verändertem $TZ die Zeit abhohlen und die Systemzeit danach stellen lassen. Dann klappt das auch.
Hallo, OK, hat bei mir etwas gedauert, bis die 10 Cent gefallen sind (wie nannte man das doch früher?). Gruß Rudi -- Auch Schlafen ist eine Form der Kritik, vor allem im Theater. [George Bernhard Shaw]
Hallo,
Bertram Scharpf
Hallo,
Danke nochmal für Eure Antworten. Jetzt hab's sogar ich verstanden. Ich fasse zusammen. (Wenn Fehler drin sind, verbessere man mich.) [...]
Gute Zusammenfassung, nachfolgend noch einige kleine Korrekturen.
II. Systemuhr
Die Genauigkeit dieser Quarzuhr ist vergleichsweise schlecht gegenüber der des Prozessors.
Nicht der Prozessor, der Betriebssystem-Kern errechnet, mit Hilfe des Prozessors, eine Systemzeit auf 6 Stellen nach dem Komma. [...]
Bei der Kommunikation im Netz können somit zwei Zeitpunkte in Stuttgart und in Sydney verglichen werden. Die zusätzliche Information ist die _Abweichung in Stunden_ von der Zeit auf dem nullten Längengrad: der "Greenwich Mean Time" (GMT), unter Unix genannt: "Universial Time Coordinated" (UTC).
Diese Aussage stimmt nicht ganz. GMT gibt es nicht mehr, da die Zeit nicht mehr als Mittelwert der Zeitangabe von mehreren Chronometern definiert wird, sondern durch die Zerfallszeit des Cäsiums. UTC ist die einheitliche Bezeichnung für die Weltzeit, das hat nichts mit Unix zu tun. Überall wo Zeit gemessen und benutzt wird, ist die Basis UTC, z.B. in der Navigation, bei der Fahrplanerstellung usw. [...]
Die Physikalisch-Technische Bundesanstalt in Braunschweig betreibt eine Cäsium-Uhr. Deren Zeit strahlt sie aus z. B. als Funksignal, das von den inzwischen sehr verbreiteten Funkuhren empfangen wird. Außerdem verschickt die Anstalt das Zeitsignal im Netz. Von Linux wird das gelesen mit
# netdate tcp ptbtime1.ptb.de ptbtime2.ptb.de
Es gibt auch noch andere Netzadressen mit Zeitservern, diese sind geordnet nach Stratum (eine Hierarchie der Zeitserver, Abhängig von dern Zeitquelle) Als Programme zur Erfassung der Zeit und zur Steuerung des lokalen Rechners und des lokalen Netzes gibt es noch xntp und chrony. Für den lokalen Betrieb empfehle ich chrony, da dies für Dial on Demand Systeme optimiert ist, im Gegensatz zu xntp, das eine ständige Netzverbindung verlangt. [...]
Wer ISDN hat, ist vielleicht schon einmal auf den Gedanken gekommen, seine Uhr nach der dort übertragenen Zeit zu stellen. Das geht auch. Aber: die ISDN-Zeit kann in der Genauigkeit mit der aus Braunschweig nicht mithalten.
Das würde ich sogar noch härter formulieren. Die ISDN-Zeit weicht häufig um etliche Sekunden von UTC ab, dies kannn sogar bis zu einigen Minuten gehen. [...] -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter@schevolution.com http://www.schevolution.com/tour
* Dieter Kluenter schrieb am 13.Apr.2002:
Bertram Scharpf
writes:
Die Genauigkeit dieser Quarzuhr ist vergleichsweise schlecht gegenüber der des Prozessors.
Nicht der Prozessor, der Betriebssystem-Kern errechnet, mit Hilfe des Prozessors, eine Systemzeit auf 6 Stellen nach dem Komma.
Aber wie macht es der Kernel? Die Zeit läßt sich doch nur dann genau berechnen, wenn der Kernel mit einem sauberen Takt getaktet wird. Ist der Taktgeber ungenau, wie will der Kernel die richtige Zeit wissen. Oder aber das clock-interupt, aber irgendeine Referenz muß er schon haben.
Als Programme zur Erfassung der Zeit und zur Steuerung des lokalen Rechners und des lokalen Netzes gibt es noch xntp und chrony. Für den lokalen Betrieb empfehle ich chrony, da dies für Dial on Demand Systeme optimiert ist, im Gegensatz zu xntp, das eine ständige Netzverbindung verlangt.
Und im Gegensatz zu netdate macht es keine Sprünge. Schon gar keine zurück, was durchaus zu Problemen führen könnte.
Wer ISDN hat, ist vielleicht schon einmal auf den Gedanken gekommen, seine Uhr nach der dort übertragenen Zeit zu stellen. Das geht auch. Aber: die ISDN-Zeit kann in der Genauigkeit mit der aus Braunschweig nicht mithalten.
Mit der Genauigkeit der Braunschweiger Atomuhr kann so wie so nichts mithalten, ganz einfach weil die Zeit der Braunschweiger Atomuhr per Gesetz die in Deutschland gültige Zeit ist. Aber davon abgesehen, ist eine Sekunde als die Zeit definiert, die das Cäsiumatom braucht um 9192631770 Schwingungen zu vollführen. Die Atomuhr ist somit auf 1/9192631770s genau. Das entspricht etwa einer Zehntel Nanosekunde.
Das würde ich sogar noch härter formulieren. Die ISDN-Zeit weicht häufig um etliche Sekunden von UTC ab, dies kannn sogar bis zu einigen Minuten gehen.
Also 600 Milliarden mal ungenauer. Bernd
Hallo Bernd, * Am 13.04.2002 um 14:36 Uhr schrieb Bernd Brodesser:
Mit der Genauigkeit der Braunschweiger Atomuhr kann so wie so nichts mithalten, ganz einfach weil die Zeit der Braunschweiger Atomuhr per Gesetz die in Deutschland gültige Zeit ist.
dann wollen wir hoffen das da nicht eines Tages mal so ein Witzbold dran rumspielt ;-) Nach den Worten von Paulchen Panter: "Wer hat an der Uhr gedreht, ist es wirklich schon so spät..." SCNR -Jürgen -- Die Natur ergreift immer die Partie des versteckten Fehlers. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /
Hallo, B.Brodesser@t-online.de (Bernd Brodesser) writes:
* Dieter Kluenter schrieb am 13.Apr.2002:
Bertram Scharpf
writes: Die Genauigkeit dieser Quarzuhr ist vergleichsweise schlecht gegenüber der des Prozessors.
Nicht der Prozessor, der Betriebssystem-Kern errechnet, mit Hilfe des Prozessors, eine Systemzeit auf 6 Stellen nach dem Komma.
Aber wie macht es der Kernel? Die Zeit läßt sich doch nur dann genau berechnen, wenn der Kernel mit einem sauberen Takt getaktet wird. Ist der Taktgeber ungenau, wie will der Kernel die richtige Zeit wissen. Oder aber das clock-interupt, aber irgendeine Referenz muß er schon haben.
Das habe ich doch schon in meiner ersten Mail zu diesem Thema angerissen, Stichwort BogoMips.
Als Programme zur Erfassung der Zeit und zur Steuerung des lokalen Rechners und des lokalen Netzes gibt es noch xntp und chrony. Für den lokalen Betrieb empfehle ich chrony, da dies für Dial on Demand Systeme optimiert ist, im Gegensatz zu xntp, das eine ständige Netzverbindung verlangt.
Und im Gegensatz zu netdate macht es keine Sprünge. Schon gar keine zurück, was durchaus zu Problemen führen könnte.
Im Prinzip richtig, aber wenn du bei jeder online Verbindung netdate ausführst, sind die Sprünge zu vernachlässigen. Auch im Hinblick darauf, dass die Netzzeit nur mit drei Stellen nach dem Komma übertragen wird.
Wer ISDN hat, ist vielleicht schon einmal auf den Gedanken gekommen, seine Uhr nach der dort übertragenen Zeit zu stellen. Das geht auch. Aber: die ISDN-Zeit kann in der Genauigkeit mit der aus Braunschweig nicht mithalten.
Mit der Genauigkeit der Braunschweiger Atomuhr kann so wie so nichts mithalten, ganz einfach weil die Zeit der Braunschweiger Atomuhr per Gesetz die in Deutschland gültige Zeit ist.
OK, das ist die Mutteruhr, aber es gibt genügend Stratum 1 Rechner, die die gleiche Zeitabweichung produzieren können. [...] -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter@schevolution.com http://www.schevolution.com/tour
* Bertram Scharpf schrieb am 12.Apr.2002:
In der Datei `/etc/adjtime' steht vor dem Herunterfahren in der letzten Zeile: "UTC". Nach dem Neustart steht da: "LOCAL". Klar, daß dann die Uhr 2 Stunden nachgeht.
/etc/adjtime löschen, es wird neu angelegt. Bernd -- Umsteiger von Microsoft Windows xx? Hast Du schon file://usr/doc/howto/de/DE-DOS-nach-Linux-HOWTO.txt gelesen? Auch file://usr/doc/Books/Linuxhandbuch.dvi ist zu empfehlen. |Zufallssignatur 1
Bertram Scharpf
Hallo nochmal,
so habe ich mir das vorgestellt: kaum rühr' ich dran, schon geht es nicht mehr.
In der Datei `/etc/adjtime' steht vor dem Herunterfahren in der letzten Zeile: "UTC". Nach dem Neustart steht da: "LOCAL". Klar, daß dann die Uhr 2 Stunden nachgeht.
Was muß ich ändern, damit das "UTC" in `/etc/adjtime' erhalten bleibt?
hwclock --systohc --utc einmal durchführen genügt, dann wird hwclock auf utc gestellt. -Dieter -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter@schevolution.com http://www.schevolution.com/tour
* Bertram Scharpf schrieb am 12.Apr.2002:
Am Freitag, 12. April 2002 00:47 schrieb eric berthold:
ich habe mal eine Grundlegende Frage zum Thema Uhrzeit:
Mails, die über den Server verschickt werden, tragen die richtige Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück.
Wäre es nicht >zeit<, die Uhrproblematik einmal umfassend zu dokumentieren? Es gibt drei Uhren: die Hardware-Clock, die Systemzeit und den Fremden im Netz. Jeder hat eine Zeitangabe und eine Zeitzone. Die Übergabeformalitäten stecken in Optionen wie '-u' (`hwclock').
Nun auf dem Rechner gibt es erst einmal zwei Uhren, da ist zum einen die Hardwareuhr. Diese Uhr ist eine reale Uhr, die es irgendwo im Rechner gibt. Sie hat eine eigene kleine Batterie und läuft auch weiter, wenn der Rechner ausgeschaltet ist, sogar wenn er monatelang irgendwo vergammelt ohne am Stromnetz angeschlossen zu sein. Diese Uhr ist die, die Du im BIOS einstellen kanst, und die auch Windows verwendet. Allerdings ist sie nicht sonderlich genau. Linux verwendet daher eine Systemuhr, die softwaremäßig simmuliert wird und letztendlich vom Systemtakt gesteuert wird. (Clockinterupt) Beim Systemstart wird die Systemuhr nach der Hardwareuhr gestellt. Dabei wird eine Gangungenauigkeit der Hardwareuhr berücksichtigt. Das geschieht über die Datei /etc/adjtime Daher ist es wichtig, daß man diese Datei löscht, falls man die Hardwareuhr verstellt hat, und diese Verstellung nichts mit der Gangungenauigkeit zu tun hat. Bei UNIX ist es üblich, daß die Uhren in Weltzeit laufen nicht in Lokalzeit. Dies erleichtert einiges erheblich. Leider ist es bei Windows üblich, daß die Uhren in Localzeit laufen. Typisch Standalone Rechner, dafür ist das in Ordnung, nicht aber in einem Netzwerk. Bei UNIX werden die Zeiten der Dateien intern in Sekunden seit 1.1.1970 0:00 GMT gespeichert. Die jeweilig gültige Lokalzeit wird bei der Anzeige berechnet. Die Weltzeit kennt keine Sommerzeit, sie läuft kontinuierlich durch. Wenn die Uhrzeit auf Lokalzeit gesetzt ist, dann weiß Linux doch nicht, ist damit Sommerzeit oder Normalzeit gemeint. Woher soll Linux wissen, ob Windows schon umgestellt hat, oder nicht? Wenn es auf GMT eingestellt ist, dann gibt es keine Probleme, allerdings zeigt Windows dann die Zeit an, falls man auch schon mal Windows bootet. Wenn einem die Zeit bei Windows wichtig ist, sollte man localzeit einstellen, wenn es einem aber egal ist, oder gar kein Windows auf dem Rechner hat, dann sollte man auf jeden Fall GMT nehmen.
Im Header Deiner Mail steht
Date: Fri, 12 Apr 2002 00:47:08 +0200
(Da tauchen die zwei Stunden auf.) Vielleicht haben die Amis
Ja, das ist die Zonenzeit, die in Deutschland im Sommer gültig ist. Weltzeit plus zwei Stunden. Im Winter ist es eine Stunde.
das irgendwo dokumentiert, denn die leben in sechs Zeitzonen.
Und unterschiedliche Sommerzeitreglungen in einzelne Staaten. Bernd -- LILO funktioniert nicht? Hast Du /etc/lilo.conf verändert und vergessen, lilo aufzurufen? Ist Deine /boot-Partition unter der 1024 Zylindergrenze? Bei anderen LILO Problemen mal in der SDB nachschauen: http://localhost/doc/sdb/de/html/rb_bootdisk.html |Zufallssignatur 6
Hi zusammen, nach so viel Theorie hier noch ein kleines Problem aus der Praxis: Bei mir hängt der Rechner beim Hochfahren etwa 90s mit der Meldung "Setting up the cmos clock" Das scheint mir nicht normal zu sein. Was macht er so lange? (Ver)stellt er da die Uhr? Wer weiß was? Gruß Stefan
* Bertram Scharpf schrieb am 12.Apr.2002:
Am Freitag, 12. April 2002 00:47 schrieb eric berthold:
ich habe mal eine Grundlegende Frage zum Thema Uhrzeit:
Mails, die über den Server verschickt werden, tragen die richtige Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück.
Wäre es nicht >zeit<, die Uhrproblematik einmal umfassend zu dokumentieren? Es gibt drei Uhren: die Hardware-Clock, die Systemzeit und den Fremden im Netz. Jeder hat eine Zeitangabe und eine Zeitzone. Die Übergabeformalitäten stecken in Optionen wie '-u' (`hwclock').
Nun auf dem Rechner gibt es erst einmal zwei Uhren, da ist zum einen die Hardwareuhr. Diese Uhr ist eine reale Uhr, die es irgendwo im Rechner gibt. Sie hat eine eigene kleine Batterie und läuft auch weiter, wenn der Rechner ausgeschaltet ist, sogar wenn er monatelang irgendwo vergammelt ohne am Stromnetz angeschlossen zu sein.
Diese Uhr ist die, die Du im BIOS einstellen kanst, und die auch Windows verwendet. Allerdings ist sie nicht sonderlich genau. Linux verwendet daher eine Systemuhr, die softwaremäßig simmuliert wird und letztendlich vom Systemtakt gesteuert wird. (Clockinterupt) Beim Systemstart wird die Systemuhr nach der Hardwareuhr gestellt. Dabei wird eine Gangungenauigkeit der Hardwareuhr berücksichtigt. Das geschieht über die Datei /etc/adjtime Daher ist es wichtig, daß man diese Datei löscht, falls man die Hardwareuhr verstellt hat, und diese Verstellung nichts mit der Gangungenauigkeit zu tun hat.
Bei UNIX ist es üblich, daß die Uhren in Weltzeit laufen nicht in Lokalzeit. Dies erleichtert einiges erheblich. Leider ist es bei Windows üblich, daß die Uhren in Localzeit laufen. Typisch Standalone Rechner, dafür ist das in Ordnung, nicht aber in einem Netzwerk. Bei UNIX werden die Zeiten der Dateien intern in Sekunden seit 1.1.1970 0:00 GMT gespeichert. Die jeweilig gültige Lokalzeit wird bei der Anzeige berechnet.
Die Weltzeit kennt keine Sommerzeit, sie läuft kontinuierlich durch. Wenn die Uhrzeit auf Lokalzeit gesetzt ist, dann weiß Linux doch nicht, ist damit Sommerzeit oder Normalzeit gemeint. Woher soll Linux wissen, ob Windows schon umgestellt hat, oder nicht? Wenn es auf GMT eingestellt ist, dann gibt es keine Probleme, allerdings zeigt Windows dann die Zeit an, falls man auch schon mal Windows bootet.
Wenn einem die Zeit bei Windows wichtig ist, sollte man localzeit einstellen, wenn es einem aber egal ist, oder gar kein Windows auf dem Rechner hat, dann sollte man auf jeden Fall GMT nehmen.
Im Header Deiner Mail steht
Date: Fri, 12 Apr 2002 00:47:08 +0200
(Da tauchen die zwei Stunden auf.) Vielleicht haben die Amis
Ja, das ist die Zonenzeit, die in Deutschland im Sommer gültig ist. Weltzeit plus zwei Stunden. Im Winter ist es eine Stunde.
das irgendwo dokumentiert, denn die leben in sechs Zeitzonen.
Und unterschiedliche Sommerzeitreglungen in einzelne Staaten.
Bernd
-- LILO funktioniert nicht? Hast Du /etc/lilo.conf verändert und vergessen, lilo aufzurufen? Ist Deine /boot-Partition unter der 1024 Zylindergrenze? Bei anderen LILO Problemen mal in der SDB nachschauen: http://localhost/doc/sdb/de/html/rb_bootdisk.html |Zufallssignatur 6
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, sto68@gmx.de writes:
Hi zusammen,
nach so viel Theorie hier noch ein kleines Problem aus der Praxis:
Bei mir hängt der Rechner beim Hochfahren etwa 90s mit der Meldung "Setting up the cmos clock" Das scheint mir nicht normal zu sein.
Was macht er so lange? (Ver)stellt er da die Uhr? Wer weiß was?
[...] Vielleicht ist deine Batterie leer und Linux kann die Uhr nicht auslesen? Oder der Real Clock Treiber ist ein unübliches Modell? Was sagt denn /var/log/boot.msg dazu? -Dieter -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter@schevolution.com http://www.schevolution.com/tour
Hallo, On Fri, 12 Apr 2002, sto68@gmx.de wrote: [Lass bitte das TOFU, lese dazu die Etikette und http://learn.to/quote]
Bei mir hängt der Rechner beim Hochfahren etwa 90s mit der Meldung "Setting up the cmos clock" Das scheint mir nicht normal zu sein.
Was macht er so lange? (Ver)stellt er da die Uhr? Wer weiß was?
Da wird die Systemzeit nach er RTC ("Real Time Clock") aka CMOS Clock gestellt: ==== /{etc,sbin}/init.d/boot ==== # set and adjust the CMOS clock echo -n Setting up the CMOS clock ECHO_RETURN=$rc_done test "$GMT" != "YAST_ASK" && hwclock -s $GMT || ECHO_RETURN=$rc_failed test -f /etc/adjtime || echo "0.0 0 0.0" > /etc/adjtime test "$GMT" != "YAST_ASK" -a "$START_XNTPD" != "yes" && { hwclock -a $GMT || ECHO_RETURN=$rc_failed } echo -e "$ECHO_RETURN" ==== -dnh -- "My manner of thinking, so you say, cannot be approved. Do you suppose I care?" -- Marquis de Sade
Freitag, 12. April 2002 00:47 eric berthold wrote: [...]
ich habe mal eine Grundlegende Frage zum Thema Uhrzeit:
Ich habe auf meinem System die Systemzeit und die Hardwarezeit (den Unterschied verstehe ich schon nicht) nach meiner lokalen Zeit eingestellt.
In yast habe ich dann die Zeitzone auf Europe/Berlin gestellt. Mails, die über den Server verschickt werden, tragen die richtige Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück. [...] Hallo Eric Die Mail von Dieter erklärt Dir genau wie die Zeit definiert wird. Gut zu lesen, da kann man kaum noch etwas hinzufügen.
Probleme gibt es immer wieder mit der Unterschiedlichen Behandlung der Uhrzeit auf deinem Motherboard, man spricht von der real time clock (rtc), durch das jeweilige Betriebssystem. Dabei wird von Betriebssystemen aus dem Evil Empire beim booten diese Zeit einfach ausgelesen und als die Systemzeit des Betriebssystemes übernommen. Also: rtc Zeit = systime Damit bestimmt die rtc-time auch die Zeitzone in der Du dich befindest. Man schaut also einfach auf seine Armbanduhr und trägt diese Zeit im BIOS Setup ein. Früher musste man dann bei jeder Sommer/Winterzeit Umstellung die Zeit wieder neu einstellen, reichlich nervig. Mitlerweile können NT und W2k/XP selber eine Umstellung nach Winter/Sommerzeit. Dazu verwenden sie Tabellen in denen die Umstellungen vorgegeben werden. Auf vernünftigen Betriebssystemen wird das schon seit ewigen Zeiten anders gehandhabt. Wir nemen einmal ein Unix System *grins* Die rtc, wir wissen damit ist die Hardware Clock auf dem Board gemeint, wird auf UTC (früher nannte man das GMT) eingestellt. Im Betriebssystem wird die Zeitzone definiert, in der sich der Rechner gerade befindet. Also in unserem Fall Europe/Berlin oder UTC+1. UTC+1 ist unsere normale Zeitzone also MEZ. Wie wird die Zeit jetzt aber von einem Unix System interpretiert? Das wird etwas komplexer und weitaus pfiffiger als auf der Systemen aus dem Evil Empire ausgewertet. Das System bootet und holt sich die Zeit aus der rtc. Wie Dieter ja schon sagte wird jetzt erst einmal eine feste Spanne für die lokale Zeit hinzugefügt, normalerweise eine Stunde. Diese Informationen und die Informationen über Umstellungen während des Jahres wie die Sommer/Winterzeit Umstellung ist hinterlegt in der Datei /usr/share/zoneinfo/Europe/Berlin. ---nur falls interessiert Im Verzeichnis /usr/share/zoneinfo werden daneben auch noch eine Datei mit den ISO 3166 2-letter country codes , definiert z.B. das DE für Deutschland, iso3166.tab und eine Datei mit Angaben zu Längen und Breitengraden einiger Städte wie Berlin , zone.tab ---ende Damit wird schon einmal die aktuelle Zeitdifferenz zur rtc grob vorgegeben, jetzt wird das noch genauer eingegrenzt. Dieter hat ja bereits geschrieben, dass die Board Uhren nicht als sehr genau gelten, alle gehen mehr oder minder vor oder nach, man spricht vom sogenannten time-shift. Um auch noch diese Ungenauigkeiten zu eleminieren gibt es die Datei /etc/adjtime dort wird ein Korrekturfaktor für Deine rtc angegeben. Allerdings nur, wenn Du sie irgendwann einmal nachgestellt haben solltest und das auch nur dann wenn Du es mit hwclock gemacht hast. Aber dazu etwas später. Solch eine Datei kann folgendermassen aussehen: ---/etc/adjtime--- -3.127072 1018601965 0.000000 1018601965 UTC ---/etc/adjtime--- Und damit kann auch eine kleinere Ungenauigkeit der rtc bei jedem booten des Systemes wieder korrigiert werden. Die so bestimmte Systemzeit gilt jetzt als das "Mass aller Dinge" bis zum nächsten boot Vorgang des Systemes und das kann ewig dauern. Kurz gefasst: Booten - rtc auslesen - Timezone auslesen - timeshift auslesen - Unix Systemzeit ermitteln Soviel zur Zeit eines Unix Systemes oder Systemzeit. Jetzt zum Nachstellen der Zeit von einem Zeitserver aus dem Internet: Es gibt von der Physikalisch technischen Bundesanstalt in Braunschweig einige Zeitserver die Ihre Urzeit wieder aus der/?den? Atomuhren der PTB beziehen. Mit einer Genauigkeit von Sekunde/Jahrmillion soweit ich mich erinnern kann. Die kann man z.B. bei jeder Verbindung, die man mit dem Modem aufbaut automatisch zur korrektur der Systemzeit und auch der rtc heranziehen. Dazu wird eine eigene Datei /etc/ppp/ip-up.local erstellt in der folgende Zeilen einzutragen sind: \\ ist ein Zeilenumbruch ---/etc/ppp/ip-up.local--- # Timeserver aufruf, ptba Braunschweig echo "Netdate aufgerufen" 1> /dev/xconsole netdate -l 1 tcp ptbtime1.ptb.de ptbtime2.ptb.de \\ 127.0.0.1 1> /dev/xconsole hwclock --systohc ---/etc/ppp/ip-up.local--- Mit netdate wird einer der Zeitserver ermittelt der ausgelesen wird. Die 127.0.0.1 sollte man unbedingt einfügen damit es keinen Ärger gibt. Falls die Zeitserver mal nicht erreichbar sind wird deine eigene Zeit genommen. Mit "hwclock --systohc" wird die rtc auf die systime neu gestellt. Und dabei wird auch ein eintrag in die Datei /etc/adjtime geschrieben. Das wars, puhh. Ich glaub viel mehr gibts dazu nicht zu sagen. Damit solltest Du schon einmal in der Lage sein deine Zeit zu bestimmen*grins* Was das Problem mit Deinen ftp-Transfers angeht, da kann es mehrere Probleme geben. 1. Welches ftp-Programm 2. Welche Zeit hat der ftp-Server von dem die Daten geholt werden, viele laufen unter UTC Ich vermute mal stark es ist Punkt 2. Aber schon mal Schulterklopf das Dir das aufgefallen ist, die meisten hätten das wahrscheinlich nicht einmal bemerkt. Tschüss, Thomas
participants (12)
-
B.Brodesser@t-online.de
-
Bernhard Walle
-
Bertram Scharpf
-
David Haller
-
Dieter Kluenter
-
eric berthold
-
Helga Fischer
-
Juergen Schwarting
-
Peter Wiersig
-
Rudolf Buerger
-
sto68@gmx.de
-
Thomas Templin