如何以编程方式在Linux上设置硬件时钟?

Linux提供stime(2)调用来设置系统时间。 但是,虽然这会更新系统时间,但它不会将BIOS硬件时钟设置为与新系统时间匹配。

Linux系统通常在关机和定期间隔时间将硬件时钟与系统时间同步。 但是,如果机器在其中一个自动同步之前进行重新启动,则机器重新启动时,时间将不正确。

如何在设置系统时间时确保硬件时钟得到更新?

Solutions Collecting From Web of "如何以编程方式在Linux上设置硬件时钟?"

查看rtc手册页获取详细信息,但是如果您以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); 

在调用stime()之后,执行以下操作:

 system("/sbin/hwclock --systohc"); 

请参阅hwclock(8)手册页以获取更多信息。

我将从阅读hwclock的源代码开始。

我还想指出,硬件时钟只是精确到一个点(我已经看到系统会每天松动/增加几秒钟)。

你有没有考虑设置网络时间守护进程来同步你的时钟与时间服务器?

无可否认,这个同步不会在守护进程启动之后才会发生,因此保持硬件时钟同步也有助于在启动和时间守护进程与时间服务器同步的时候。

请注意,如果文本编辑器是不同于kubuntu(凯特是编辑器中的默认值)。 在终端中使用你自己的sudo命令。

1)运行终端2)复制并粘贴这个命令sudo kate / etc / default / rcS按回车3)输入用户密码(你的登录密码)按回车4)在桌面上打开文本编辑器5)改行UTC = yes到UTC =否6),然后点击保存(在文本编辑器标签栏顶部)7)重新启动