The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > UNIX for Dummies Questions & Answers > Antworten auf häufig gestellte Fragen > Tipps und Tutorials
.
Google unix.com



Tipps und Tutorials Hilfreiche Texte von unseren Nutzern.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Das Verständnis dieses Makefile the_learner High-Level-Programmierung 5 06-14-2007 02:55 AM
Brauchen Sie Hilfe Verständnis einer Unix-Befehl chris86 UNIX for Dummies Questions & Answers 6 10-10-2006 04:35 PM
Eine kleine Hilfe Verständnis FIFOs? Deckard Linux 0 11-01-2005 01:46 PM
weitere Verständnis von init.d jigarlakhani UNIX für Fortgeschrittene und Experten 1 09-20-2002 04:11 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Understanding Unix Zeitmessung

Interne Zeit
Intern, ein Unix-System vor, wie die Anzahl der Sekunden seit der Unix-Epoche. Die Unix-Epoche war um Mitternacht, 1. Januar, 1970 UTC. In der Ost-Zeitzone der USA, war der 31. Dezember 1969 um 19:00 Uhr. Als ich diesen Artikel, die Zeit ist 1171733878. Ich bin mit NTP (Network Time Protocol), um meinen Computer die Uhr synchron. Also auf die genaue sofort, dass mein Computer dachte, es sei 1171733878, so haben Sie wahrscheinlich. Jeder Computer sollte im Einvernehmen darüber, welche Zeit es ist. Dabei spielt es keine Rolle, in der Zeitzone Ihrem Computer befindet oder in dem Sie Ihren Wohnsitz Zeitzone. Wenn ich in eine Datei geschrieben werden, dass während der zweite, würde Unix haben die Änderung der Zeit als 1171733878.

Unix-Zeit ist eine traditionelle unterzeichnet 32-Bit-Integer. Das bedeutet, dass die maximale Zeit ist 2147483647, die im Ost-Zeitzone der USA wäre der 18. Januar 2038 bei 22:14:07. Der Plan ist für diese zu erweitern, um eine 64-Bit-Integer, bevor dann. Unix Sekunden zählen forward one-by-one. Nach 1171733878, der nächsten Sekunde, dass mein System wissen, ist 1171733879. Einmal ist es synchron, NTP Arbeiten durch die Verkürzung oder Verlängerung einer Sekunde. Ich kann die Zeit, indem Sie die System Call time (). Wenn ich etwas besser als die Sekunden, die nächste am genauesten ist die System Call mal (). mal () Hauptzweck ist es, eine Struktur der Daten, die System-Nutzung. Aber die Return-Code ist auch nützlich, ... Es ist die Zeit in der Uhr tickt. Uhr Zecken beginnen bei einigen beliebigen Punkt in der Vergangenheit (oft Boot-Zeit), und sie voraus, wenn die Kernel-Uhr-Routine läuft. Wie viele Uhr Ticks pro Sekunde, können variieren. Sie können sysconf (_SC_CLK_TCK), um herauszufinden, Ihren Wert. Gemeinsamer Wert 100 ist in diesen Tagen. Ältere Systeme verwendet 60. 100 und 60 sind die einzigen beiden Werte die ich je gesehen habe. Uhr tickt auch wieder als signed integer. So nach ca. einem Jahr, die Zahl wird auf Null zurückgesetzt. Andere als Rollover, Uhr tickt auch voraus one-by-one. (Clock Ticks werden oft als "jiffies" von Linux-Leute.) Es gibt auch ein anderes System zu tätigen, gettimeofday (), die die Zeit seit der Unix-Epoche in Sekunden und Mikrosekunden. gettimeofday () benötigt, um existieren und zu nutzen Mikrosekunde genau. Aber die Genauigkeit ist ausdrücklich nicht spezifiziert. Die Mikrosekunden nicht vorab einzeln in einem System, das ich gesehen habe. Ich gehe davon aus, dass Unix-Systeme sind ziemlich gut mit hundreths eine zweite und vielleicht sogar einigen Fällen ist Millisekunden. Aber ich würde nicht davon ausgehen, dass über jede Genauigkeit.

Human Readable Timestamps
Jetzt, da wir wissen, wie Unix bleibt Zeit, lassen Sie uns nun zu einem anderen Thema: Wie, um Zeit zu einem Benutzer. Nur wenige Nutzer gerne mit einem Zeitstempel angezeigt wie 1171733878. Da ich in der Ost-Zeitzone der USA, möchte ich, um zu sehen, wie etwas 12:37:58 am 17 Feb 2007. Aber eine Person in Los Angeles, Kalifornien möchte so etwas wie 9:37:58 auf der 17. Februar 2007. Ich habe ein wenig perl Skript, um die Formatierung, wenn eine Zahl wie 1171733878. Hier ist die Ausgabe, wie sie erscheinen soll, in der Ost-und Pazifik-Zeitzone für ein paar sorgfältig ausgewählte Zeitstempel:
Ost:
1173596399 Sonntag 2007-03-11 01:59:59 Standard Time
1173596400 Sonntag 2007-03-11 03:00:00 Sommerzeit
1173607199 Sonntag 2007-03-11 05:59:59 Sommerzeit
1173607200 Sonntag 2007-03-11 06:00:00 Sommerzeit
Pazifik:
1173596399 Samstag 2007-03-10 22:59:59 Standard Time
1173596400 Samstag 2007-03-10 23:00:00 Standard Time
1173607199 Sonntag 2007-03-11 01:59:59 Standard Time
1173607200 Sonntag 2007-03-11 03:00:00 Sommerzeit
Beachten Sie, dass die internen Unix-Zeit ändert sich nicht mit dem Beginn der Sommerzeit. Was passiert, ist, dass eine neue Regel, wie die Zeit, um wirksam wird. Bei der Umrechnung der internen Zeit, einen Zeitstempel, Unix muss wissen, welche Zeitzone zu verwenden. Und er muss wissen, wenn Sommerzeit in Kraft ist. Es gibt verschiedene Unterprogramme, die aufgerufen werden, um einen Zeitstempel-Format. Alle diese sich schließlich tzset (), um die Zeitzone und den Stand der Sommerzeit. Und tzset immer prüft, ob die Umgebungsvariable TZ, um herauszufinden, was der Benutzer wünscht. Wenn Sie noch kein TZ-Umgebungsvariable, tzset () wird mit einer Art, dass der Standard kann von System zu System. Die TZ Umgebungsvariable ist oft auf so etwas wie EST5EDT4, was ich benutze. Diese besagt, dass ich in einer Zeitzone EST genannt, die Offset von Universal Time von 5 Stunden und während der Sommerzeit Tag meine Zeitzone wird MESZ die Offset von Universal Time von 4 Stunden. Zu wissen, wenn Sommerzeit in Kraft ist, tzset wird sich in einigen Daten-Datei. Welche Datei (und in welchem Format die Datei ist in) variiert von System zu System. Die Patches, die verfügbar sind für dieses Jahr der Veränderung der Sommerzeit sollte wirklich etwas mehr als einige Änderungen an diesen Dateien.

Universal Time
Zusätzlich zu wissen, über die Sie Ihre Zeitzone, einem UNIX-System muss in der Lage zu nutzen Universal Time "(das ist fast die gleiche wie die alten Greenwich Mean Time). Das ist es, was "date-u" bedeutet. Die Definition für Universal Time "bekannt ist und nicht die Sommerzeit Änderungen. Die Universal Time Definition kann bauen in dem Zeitpunkt, Routinen und nicht mit Hilfe der Daten-Datei für tzset (). Dies kann auch der Fall, wenn ein Eintrag vorhanden ist für UTC. Mail-Programme verwenden oft UTC Zeitstempel.
  #2 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Sommerzeit in die Hauptstadt haben sich geändert und ich habe keinen Patch .... Was ist zu tun?

Nehmen wir an, mein System ist noch bis zum letzten Artikel. Mein System wird schon bald zur falschen Zeit. Was soll ich tun? Eine Sache, die ist nicht eine sehr gute Idee wäre, Kurbel um die Uhr eine Stunde nach vorn manuell. Wenn ich, dass mein System wird die interne Zeit falsch. Einige Netzwerk-Dienste wie NFS Verwenden Sie die interne Zeit. Mein System würde auch nicht mehr über das richtige Weltzeit. NTP (Network Time Protocol) die Fehlfunktion, und mein System die Uhr wird Drift. Auch für meine eigene Zeitzone, hätte ich wie Zeitstempel 17:00 EST, wenn ich hätte 17:00 MESZ. Ein paar Wochen später, die alte Regelung in Kraft treten, und ich werde jetzt brauchen, um die Uhrzeit auch manuell wieder.

Ich hoffe, dass ich Sie davon überzeugt haben, nicht die Zeit auf diese Art und Weise. Eine bessere Alternative wäre die Forschung mein System die Daten-Datei, die die Sommerzeit-Regeln für meine Zeitzone und bearbeiten sie mich. Dies sollte eine einfach ändern. Aber jeder kann seine eigenen Format.

Es scheint als in der Nähe von universelle Lösung: Verwenden Sie eine komplexere Format für die TZ-Umgebungsvariable. Sie können tatsächlich die Sommerzeit in der Regel TZ und dieses Verhalten ist im Auftrag von Posix. Im Folgenden finden Sie eine Tabelle für die TZ-Einstellungen, die ich der Meinung, korrekt zu sein für das Jahr 2007.
Code:
# Posix Format
TZ="EST5EDT4,M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Eastern
TZ="CST6CDT5,M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Central
TZ="MST7MDT6,M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Mountain
TZ="PST8PDT7,M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Pacific
TZ="AST9ADT8,M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Alaska
TZ="HST10"                                       # US Hawaii

# Old System V Release 3.1 and Xenix Format
TZ="EST5EDT4;M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Eastern
TZ="CST6CDT5;M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Central
TZ="MST7MDT6;M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Mountain
TZ="PST8PDT7;M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Pacific
TZ="AST9ADT8;M3.2.0/02:00:00,M11.1.0/02:00:00"   # US Alaska
TZ="HST10"                                       # US Hawaii

  #3 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Spezielle Hinweise für Cron

cron wird sich im Wandel der Zeit
Wenn Sie das System während Cron ausgeführt wird, werden feststellen, cron und versuchen zu kompensieren. Wenn die Zeit rückwärts bewegt, wird die cron-Jobs laufen, und warten Sie auf die Uhr, um zurück zu cron das letzte Angebot. Wenn es die Zeit nach vorne bewegt, cron wird versuchen, aufzuholen. Es wird aber klicken Sie auf jede Minute, bis es laufen alle der geplanten Arbeitsplätze in der Zeit Dauer übersprungen. Wenn Sie sich nur um Retuschen die Systemuhr, weil es aus ein paar Sekunden, das ist perfekt. Aber wenn die Zeit ist ein Jahr aus, wird es wahrscheinlich nicht für eine gute Sache. Für große Anpassungen der Uhr sollten Sie töten, und starten Sie Cron.

cron wird auf Sommerzeit Änderungen
Angenommen, ich habe eine Arbeit, deren Laufzeit am Sonntagmorgen 2.15 Uhr. Wenn wir "Frühling voraus", es wird kein 2.15. cron wird feststellen, dass wir "vor Sprung" von 60 Minuten, so wird sie 60 Minuten Zeit, um meine Arbeit immer 3.15. Es wird die Aufgabe bei 3:15 ... es sei denn, der Job wurde bereits geplant, um auf 2:15 und 3:15. In diesem Fall, meine Arbeit wird einmal auf 3:15.

Später im Jahr haben wir "zurück". An diesem Sonntag, es wird zweimal 2:15. Meine Aufgabe wird nur bei der ersten 2:15. Wenn meine Arbeit ist für die Dauer von 15 Minuten nach jeder vollen Stunde über die explizite Verwendung von einem Stern in der Stunde Bereich meiner Arbeit wird auf 2.15 's. Das ist nicht wahr, wenn ich eine Reihe oder eine Liste von Stunden zu laufen. Nur Stellenangebote mit einem Stern für die Stunde Bereich laufen auf 2.15 's.

Cron hat seine eigene Zeitzone
Wenn ich meine Arbeit Zeitplan für 2.15 Uhr am Morgen, cron wird es, wenn es der Ansicht, dass die Zeit ist 2:15. Cron ist eng mit dem "at"-Befehl. Wenn ich Zeitplan von Arbeitsplätzen durch "at", um 2.15 Uhr auf, meine TZ Variable wird kontrolliert und die Arbeit läuft auf meinem 2.15. Aber cron funktioniert nicht so.
  #4 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Schaltsekunden

Die Definition einer Sekunde genau festgelegt. Jeder zweite ist genau so lange, wie jeder andere Sekunde. Wenn Wissenschaftler Kopplungsprodukt die genaue Wert von einer zweiten, sie mit so genau wie möglich auf das Jahr 1900. Es sind 24 * 60 * 60 \u003d 86400 Sekunden pro Tag. Aber die Erde hat sich ein bisschen was vor allem auf die Gezeitenkräfte. Jedes Jahr muss über ,7 Sekunden extra. Hin und wieder haben wir einen Tag mit 86.401 Sekunden. Unix versucht, so zu tun, dass dies nicht der Fall ist. Wenn Sie nicht mit NTP, dann müssen Sie in regelmäßigen Abständen manuell optimieren Ihre Uhr und werden Sie für eine Schaltsekunde während Ihres nächsten manuellen Einstellung.

Wenn Sie mit NTP, Unix versucht, der letzten Sekunde des Tages mit einer Schaltsekunde letzten 2 Sekunden lang gedrückt. Bei vielen Implementierungen, die zweite wird unangemessen vorab in der Mitte dieser besonderen Sekunden lang und wird nach hinten ein paar Millisekunden später.

So ignorieren die potenziellen messy zweiten lange Übergangszeit, behandeln wir jeden Tag so, als ob es 86400 Sekunden lang.

By the way, es dauerte über ein Jahrhundert, die Erde zu verlangsamen genug Bedarf ,7 Sekunden extra pro Jahr. Es wird ein anderes Jahrhundert zu verlangsamen genug, um rund 1,4 Sekunden benötigen weiteres Jahr. Glaube nicht, dass jedes Jahr ist ,7 Sekunden länger als die seiner unmittelbaren Vorgänger.
  #5 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Mein Perl-Skript

Hier ist meine Perl Skript, das ich in diesem Artikel ...
Code:
#! /usr/local/bin/perl


sub printtime($)
{
        @d=localtime $_[0];
        printf "%12d  %3s %4d-%02d-%02d %02d:%02d:%02d %s\n", $_[0],
                (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$d[6]],
                $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0],
                ("Standard Time","Daylight Saving Time")[$d[8]];
}

while (do {print "Enter val - "; chomp($val = <>)}) {
        print "val = ", $val, "\n";
        printtime $val;
        printtime $val+1;

}
print "\n";

Dies ist, wie ich überprüfen, ob die Zeitzone Daten korrekt sind. Ich habe gerade Berechnung von Hand die zweite, wenn ich erwarte, dass die Sommerzeit zu wechseln und ich verwende dieses Skript, um zu sehen, wenn sie nicht ...
  #6 (permalink)  
Old 02-20-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Verschiedenes Odds und endet

Ihr OS Grenzen über die Bandbreite der Daten, dass sie Format
Sie müssen sich in der Dokumentation zu Ihrem System, in dem es Daten verarbeiten kann.

Zum Beispiel, HP-UX 11i Version 2 sagt:
Die Mindest-Datum von mktime () in 32-Bit-und 64-Bit HP-UX ist Freitag, der 13. Dezember 20:45:52 UTC 1901. Die maximale Daten von mktime () sind Dienstag 19 Januar 03:14:07 UTC 2038, und Freitag, Dez 31 23:59:59 UTC 9999 im 32-Bit HP-UX-und 64-Bit HP-UX, respectively. Wenn der Kalender kann nicht vertreten sein, die Funktion liefert den Wert (time_t) -1 und setzt errno zu ERANGE. Notieren Sie sich den Wert (time_t) -1 entspricht auch der Zeit 23:59:59 am 31 Dezember, 1969 (plus oder minus Zeitzone und Sommerzeit Anpassungen). Daher ist es notwendig, sowohl den Rückgabewert und errno zuverlässig Fehler Zustand.

Solaris 10 sagt:
Die Zeitzone zoneinfo Dateien nicht Übergang Vergangenheit Tue Jan 19 03:14:07 2038 UTC. Daher für 64-Bit-Anwendungen mit zoneinfo Zeitzonen, Berechnungen über diesen Zeitpunkt hinaus möglicherweise nicht die richtigen Ausgleich von Standard Time, und könnte falsche Werte zurück. Dies wirkt sich auf die 64-Bit-Version von localtime (), localtime_r (), ctime (), und ctime_r ().

Nanosekunden-Auflösung
Ich stelle fest, dass Posix gibt eine Vielzahl von nanaosecond Auflösung Routinen. Ich sehe, dass Solaris 10 hat sie. Ich habe keine Erfahrungen mit ihnen, und ich habe sie ignoriert, für diesen Thread. Die clock_settime (3RT) Manpage:
Zitat:
Ein clock_id der CLOCK_HIGHRES stellt die nonadjustable, High-Resolution-Uhr für das System. Für diese Uhr, den Rückgabewert von clock_gettime (3RT) entspricht der Höhe der Zeit (in Sekunden und Nanosekunden) seit einigen willkürlichen Zeitpunkt in der Vergangenheit, es ist nicht korreliert in irgendeiner Weise auf die Zeit des Tages und ist somit nicht Gegenstand Zurücksetzen oder treibend durch die adjtime (2), ntp_adjtime (2), settimeofday (3C), oder clock_settime (). Die Zeit für dieses Uhr ist die gleiche wie für gethrtime (3C).
Dies bedeutet, dass die Nanosekunden-Auflösung Routinen sind nicht für die Zeitmessung. Auf der anderen Seite sehe ich ls hat jetzt eine E-Option, um Dateien in Nanosekunden.

Wenn Sie die Zeit in Nanosekunden, achten Sie darauf, halten Sie die Augen sehr nahe an den Bildschirm. Licht kann nicht einmal eine Reise voller Fuß in einer Nanosekunde.

Weitere Lektüre
Stellen Sie sicher, dass zu lesen mtime, ctime und atime für Informationen über die Zeitstempel von Dateien.
 

Lesezeichen

Tags
Uhr, mtime, Zeitmessung

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 09:16 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0