嵌入式设备时间同步管理

时间:2021-07-08 11:29:29

今天在做设备WEB时间管理的时候发现了一些很有兴趣的问题;在嵌入式设备中我们可以使用两种方式来设置当前系统时间;一个是通过date这个指令来设置,另一个则是使用远端NTP服务器来获取网络时间。

当然使用date -s “format_string_time” 来设置本地时间就再简单不过了,但是很搞的是当我用date -s “2015-09-07 23:02”来设置设备的时候发现他会报无效的时间参数,原因是嵌入式设备中指令集大多都会使用busybox来处理,但是busybox的date -s 参数时间格式很逆天,他的格式是 “月-日-时-分-年”;例如:date -s “090723022015”;然后就成功了;可以使用date来查看当前系统时间;发现设置 OK;

下面就要说使用NTP协议来设置当前系统时间了,理论上来说ntp协议需要本地发送一个ntp的请求报送到指定的NTP服务器上,然后获取时间并设置到本地系统时间上来;这里Linux使用了一个指令ntpd来操作以上步骤;
ntpd -u ntpServer_ip_addr;
例如:
首先将ntp服务端口写到/etc/services中,添加两行
ntp 123/tcp
ntp 123/udp
然后执行
ntpd -u 202.112.10.60
操作完成之后,date一下,看看系统时间对不对;