Wie stellen Sie Programmatically die Hardware-Uhr auf Linux?
Frage
Linux bietet die stime (2) rufen Sie die Systemzeit einstellen. Doch während dies die Systemzeit aktualisiert wird, ist es nicht das BIOS-Hardware-Uhr setzen Sie die neue Systemzeit entsprechen.
Linux-Systeme synchronisieren typischerweise die Hardware-Uhr mit der Systemzeit beim Herunterfahren und in periodischen Abständen. Wenn jedoch die Maschinenleistung-radelte vor einem dieser automatischen Synchronisierungen wird, wird die Zeit falsch sein, wenn die Maschine neu gestartet wird.
Wie stellen Sie sicher, dass die Hardware-Uhr aktualisiert wird, wenn Sie die Systemzeit eingestellt?
Lösung
Überprüfen Sie die rtc Mann-Seite für Details, aber wenn Sie als root, so etwas wie dies angemeldet:
struct rtc_time {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday; /* unused */
int tm_yday; /* unused */
int tm_isdst;/* unused */
};
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
Andere Tipps
Nach dem Aufruf von stime (), dies zu tun:
system("/sbin/hwclock --systohc");
Sehen Sie die hwclock (8) man-Seite für weitere Informationen.
Ich würde beginnen, indem Sie den Quellcode von hwclock zu lesen.
Ich würde auch die Hardware-Uhr darauf hinweisen, ist nur dann genau auf einen Punkt (ich habe Systeme gesehen, die ein paar Sekunden pro Tag verlieren / Gewinn).
Haben Sie darüber nachgedacht, die Netzwerk-Zeit Daemon einrichten, um Ihre Uhr mit einem Zeitserver zu synchronisieren?
Zwar diese Synchronisierung nicht geschieht erst nach der Daemon startet so die Hardware-Uhr auch synchron zu halten zwischen der Leistung und dem Punkt synchronisiert gegen den Zeitserver der Zeit Daemon hilft.
Wenn der Text-Editor ist anders als Kubuntu (kate ist die Standard-Editor), Ihre eigenen verwenden, um mit dem sudo
Befehl im Terminal.
- run Terminal
- Kopieren und fügen Sie diesen Befehl
sudo kate /etc/default/rcS
drücken Sie Enter - Geben Sie Benutzer-Passwort (Ihr Login-Passwort) drücken Sie Enter
- Texteditor auf dem Desktop öffnen
- die Zeile
UTC=yes
ändernUTC=no
- und klicken Sie auf Speichern (oben im Texteditor Tab-Leiste)
- Neustart