Linux提供stime(2)调用来设置系统时间。但是,虽然这将更新系统的时间,但它不会将BIOS硬件时钟设置为与新的系统时间匹配。
Linux系统通常在关机时以周期性间隔将硬件时钟与系统时间同步。但是,如果机器在其中一个自动同步之前进行电源循环,则当机器重新启动时,时间将不正确。
如何确保在设置系统时间时硬件时钟得到更新?
发布于 2008-10-14 17:59:44
有关详细信息,请查看rtc手册页,但如果您以root身份登录,则如下所示:
#include <linux/rtc.h>
#include <sys/ioctl.h>
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 */
};
int fd;
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
发布于 2008-10-14 17:43:14
在调用stime()之后,执行以下操作:
system("/sbin/hwclock --systohc");
有关更多信息,请参阅hwclock(8)手册页。
发布于 2008-10-14 17:48:49
我还想指出,硬件时钟只在一定程度上是准确的(我曾见过一些系统每天会丢失/增加几秒钟)。
您是否考虑过设置网络时间守护程序来根据时间服务器同步您的时钟?
诚然,这种同步直到守护进程启动后才会发生,因此保持硬件时钟同步也有助于在加电和时间守护进程与时间服务器进行同步之间。
https://stackoverflow.com/questions/202116
复制相似问题