Linux系统时间分为两种:系统时间和硬件时间。系统时间为Linux内核时间,硬件时间一般为BOIS中的RTC时间。Linux内核在启动时,会尝试读取BIOS中的RTC时间,并以此为基准设置系统时间。内核启动之后,系统时间和硬件即为两个独立的时间,各自运行。
嵌入式Linux系统开发时,同样需要提供硬件来为系统提供时间基准,这个硬件一般就是RTC芯片,比如,rx8010。Linux关于时间的配置包括:系统时间设置、硬件时间设置、时区设置。
时区配置
tzselect命令用于设置系统的当前时区。在桌面系统上,比如,ubuntu或者Debian系统,系统支持完整的时区配置,可以使用tzselect按照命令提示一步一步进行配置,比如,设置Asia/China/Beijing时区
执行tzselect命令 --> 选择Asia --> 选择China -->选择Beijing Time-->Yes保存设置
最终,系统会将TZ=‘Asia/Shanghai’; export TZ配置到~/.profile文件。
嵌入式Linux系统,一般不会提供tzselect命令,那么时区的配置可以通过直接配置TZ环境变量设置系统时区的。同时,需要在/usr/share/zoneinfo目录下提供时区相关的配置文件,这里只配置了Asia的时区。
配置TZ环境变量$ cat /etc/profileTZ='Asia/Shanghai'; export TZ
/usr/shared/zoneinfo目录下必须包含时区信息# /usr/share/zoneinfo$ lsAsia PRC
通过date命令可以查到当前的时区信息:
Tue Jul 7 10:00:02 CST #CST表示东八区
系统时间配置
系统的时间配置方式分为:手动配置和NTP同步,手动配置一般通过date命令直接设置系统时间,NTP方式通过NTP服务器配置本地的系统时间。
为了时间的精确性,建议使用NTP方式配置系统时间。
ntpdate .
如果对于时间精确性要求不高,可以使用date命令直接设置系统时间,date支持的时间配置格式十分的灵活,下面举几个简单的例子,如果有兴趣可以通过man date查看更多的用法。
1、将日期设置为07月6日[root@linux-node ~]# date -s 07/06/202、将时间设置为10点07分00秒[root@linux-node ~]# date -s 10:07:003、将时间设置为07月06日 10:08[root@linux-node ~]# date -s "-07-07 10:08:00"
硬件时间配置
hwclock命令用于管理硬件时间,可以通过该命令完成硬件时间的设置,系统时间和硬件时间之后的转换等。
查看硬件时间hwclock -r #查看当前硬件时间Tue Jul 7 02:10:10 0.000000 seconds
同步系统时间和硬件时间hwclock -w -u
注意:
-w表示将系统时间同步到硬件时间,-u表示硬件时间以UTC时间为准。
系统启动时,会通过硬件同步系统时间,系统认为从硬件取到的UTC时间,之后再按照
本地时区,将UTC时间转换为本地时间,所以,为了使系统设置正确的时区时间,这里
必须加上 -u选项。
同步系统时间和硬件时间hwclock -s -u
-s表示将硬件时间同步到系统时间,-u表示硬件时间为UTC时间,如果硬件时间以UTC时间保存,那
必须使用-u选项。