genaue Uhrzeiteinstellung bzw. Uhrzeit-Restore

tommoni

New Member
Hi,

ich versuche derzeit eine Sekundengenaue Skriptbasierte Uhrzeiteinstellung vorzunehmen; sudo date liefert ja leider nur eine minutengenaue :-(((
Gibt es evtl. eine getdate dann folgt die temporäre Uhrzeitänderung und anschließend eine restore Funktion?

Oder eine gangbare Alternative zu sudo date ?

Grüße tommoni
 
Ich glaube, irgendwo in den Netzwerkeinstellungen kann man einen ntp-Server einstellen. Wenigstens hab ich das so gemacht.
 
Immer mit der Ruhe, denn ich hab überhaupt keinen Mac. Ich wollte nur helfen. Mann, seid Ihr manchmal schlecht drauf.

Kann man eigentlich die Sekunden auf dem Mac nicht bei date hinter einem Punkt angeben? Laut man-Page auf FreeBSD müsste es gehen.
 
Mac OS X synchronisiert per default mit Apple-eigenen Stratum2-Servern im jeweiligen Kontinent. Die Uhrzeit wart bisher jedenfalls genau genug, um die Tagesschau nicht zu verpassen.
 
tommoni schrieb:
ich versuche derzeit eine Sekundengenaue Skriptbasierte Uhrzeiteinstellung vorzunehmen;

Hallo tommoni,

als Fan der graphischen Oberfläche klickt man natürlich einfach
Systemeinstellungen -> "Datum & Uhrzeit" (Steht bei System)

als Fan der Commandline empfiehlt sich auch bei MacOS X einfach ein Blick in die Hilfeseiten
% man date

Code:
NAME
     date - display or set date and time

SYNOPSIS
     date [-nu] [-r seconds] [+format]
      [[[[[cc]yy]mm]dd]hh]mm[.ss]

Was willst Du denn eigentlich erreichen?

Ciao

Der Kawana
 
Datum und genaue Uhrzeiteinstellung

Hallo,

erstmal vielen Dank für die großzügige Aufmerksamkeit, mit der mein "Zeitproblem" bedacht wurde. Nur leider muß ich mich selbst am Kragen packen, hätte ich doch mein Anliegen besser beschrieben, da jetzt nach wie vor KEINE LÖSUNG in Sichtweite ist.
Deshalb hier nochmals konkret:
Ein Simulationsprogramm errechnet auf Zeitbasis der Systemzeit eine ganze Latte Werte, die nach einem ca. 220 sekündigen Rechendurchgang als Datei ausgeworfen werden. Anschließend soll die Simulation mit einer um exakt 1 Jahr verringerten Zeitbasis wiederholt werden. Dabei gilt ein Startwert von +- 20 Jahre ab der Jahrtausenwende, den man extern durch auslesen einer Startdatei zusammen mit dem Stoppwert erhält.
Eigentlich ganz einfach, NUR: Nach etwa 5 Durchgängen ist die Zeitbasis derart verstellt, daß man an einer Synchronisation gar nicht mehr umhin kommt. Da diese Simulation jetzt aber gleichzeitig in etwa 50 Vorgängen parallel ablaufen, dauert das Ganze etwa 3 Stunden mit 50 Aufrufen der Zeitbasis, währenddessen der nächste Step mit der um 1 Jahr verringerte Zeitbasis schon ansteht.
Jetzt ist es mir nicht möglich alle 3 Stunden 50x per ntp-Server synchronisieren zu lassen und das über 36 Stunden lang, die solch eine komplette Simulation dauert.
Das muß viel einfacher gehen, deshalb meine Frage nach einer Funktion:
"get date" dann folgen die etwas über 500 temporären Uhrzeitänderungen (nur Jahre) per Skript für die Simulation und abschließend eine "restore" Funktion der Uhrzeit zu Beginn des ganzen Procederes?

Vor 20 Jahren hätte ich einfach den Stack ausgelesen, aber heute ist dieses Vorgehen utopisch - leider.
P.S. Mit händisch eingegebenen Werten der Zeitbasis klappte das schon leidlich, jedoch erhielt ich des öfteren eine Systemmeldung, daß der Versuch das Datum zu ändern zu weit vorgriff; da scheint also auch noch eine Funktion vorhanden zu sein, die (häufige, automatische) Datumsänderungen verhindert?
P.P.S. OS X 10.3 iMac G5

Hier noch mein auszugsweises unfertiges Skript dazu. Ich weiß, ist nicht das Eleganteste, aber vielleicht hat Jemand einen Vorschlag zur Lösung meines Problems

set Jahr2000 to "2000"

get date

set Jahr to (year of (current date) as integer)
set Monat to (month of (current date) as integer)
set Tag to (day of (current date) as integer)

set Zeit to (time of (current date) as integer)
set Stunde to ((round (Zeit div 3600)) as integer)
set Minute to ((round ((Zeit - (Stunde * 3600)) div 60)) as integer)
set Sekunde to ((Zeit - (Stunde * 3600) - (Minute * 60)) as integer)
set MinSekTemp to (round (((Sekunde / 60) + Minute) * 100) as real)
set MinSekDezimal to ((MinSekTemp / 100) as real)
set MinSek to (((Sekunde / 100) + Minute) as real)


set Zeitstempel to ((Jahr * 100000000 + Monat * 1000000 + Tag * 10000 + Stunde * 100 + MinSekDezimal) as real)
--usage: date [-nu] [-r seconds] [+format]
-- date [[[[[cc]yy]mm]dd]hh]mm[.ss]
--199912312359.59
--000000000000.00
do shell script "sudo date -r 20000101000000"

try
tell application "TechSim 3.0"
activate

end tell
end try


--display dialog (Jahr2000)
--do shell script "sudo date -r" & {Zeitstempel}

--do shell script "sudo date -r" & {Jahr, Monat, Tag, Stunde, MinSek}

--die noch unfertige Routine für den Durchlauf
repeat with i from 1 to number of items in the Datei_Zeitspanne
set Datei_Jahr to item i of the Datei_Zeitspanne
open Datei_Jahr
set Jahreszahl to Jahr2000
try
do shell script "sudo date " & {Jahreszahl, Monat, Tag, Stunde, Minute}
end try
close Datei_Jahr saving yes
end repeat



--abschließendes Zeitskript um Uhrzeit nach etwa 100 Zyklen wieder zu stellen
property dialog_timeout : 1



display dialog (Jahr) giving up after dialog_timeout

try
do shell script "sudo date " & {Jahr, Monat, Tag, Stunde, Minute} -- Und SEKUNDE da hakt es eben ständig !!!
end try
 
Also eines kann ich Dir sagen. Die Systemzeit ist nicht dazu da, um damit herumzuspielen. Durch ständiges Ändern kannst Du Dein System unbrauchbar machen.

Bessere Lösung wäre, die Zeit zu virtualisieren und einen separaten Timer laufen zu lassen.

Ist Dir nicht aufgefallen, dass Du selbst ein einfaches Benutzer-Programm ausführst und dieses die Systemadminrechte missbraucht (um die Uhrzeit zu stellen)?

Da muss es doch irgendwann *klick* machen, dass es SO nicht sinnvoll ist.
 
virtueller

Hallo,

es zählt in diesem Falle nur das Resultat :-)

>Bessere Lösung wäre, die Zeit zu virtualisieren und einen separaten Timer laufen zu lassen.

Klar, sowas wäre die elegantere Lösung.
Wie wäre der Vorschlag dazu, ich bin offen für alle Lösungsmöglichkeiten, welche - wie ich schrieb - einfacher sind, als mein Versuch hier :-)))

Grüße an alle, die eine Idee dazu haben
 
Zurück
Oben