Linux提供了stime(2)调用来设置系统时间。但是,虽然这会更新系统的时间,但它不会将BIOS硬件时钟设置为与新系统时间匹配。
Linux系统通常会在关机时定期将硬件时钟与系统时间同步。但是,如果机器在其中一个自动同步之前重新启动电源,则机器重新启动时的时间将不正确。
如何确保在设置系统时间时更新硬件时钟?
答案 0 :(得分:14)
查看rtc man-page了解详细信息,但如果您以root用户身份登录,请执行以下操作:
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);
答案 1 :(得分:9)
在调用stime()之后,执行以下操作:
system("/sbin/hwclock --systohc");
有关更多信息,请参见hwclock(8)手册页。
答案 2 :(得分:2)
我还想指出硬件时钟只是精确到一定程度(我已经看到系统每天会松散/获得几秒钟)。
您是否考虑过设置网络时间守护程序以将时钟与时间服务器同步?
不可否认,这种同步直到守护进程启动后才会发生,因此保持硬件时钟同步也有助于加电和时间守护程序与时间服务器同步的点。
答案 3 :(得分:2)
我首先阅读hwclock的源代码。
答案 4 :(得分:0)
如果文本编辑器与kubuntu不同(kate是编辑器中的默认编辑器),请在终端中使用您自己的sudo
命令。
sudo kate /etc/default/rcS
按 Enter UTC=yes
更改为UTC=no