Linux系统下包含两个时间:系统时间和RTC时间。
系统时间:是由主芯片的定时器进行维护的时间,一般情况下都会选择芯片上最高精度的定时器作为系统时间的定时基准,以避免在系统运行较长时间后出现大的时间偏移。特点是掉电后不保存。
RTC时间:是指系统中包含的RTC芯片内部所维护的时间。RTC芯片都有电池+系统电源的双重供电机制,在系统正常工作时由系统供电,在系统掉电后由电池进行供电。因此系统电源掉电后RTC时间仍然能够正常运行。
每次Linux系统启动后在启动过程中会检测和挂载RTC驱动,在挂载后会自动从RTC芯片中读取时间并设置到系统时间中去。此后如果没有显式的通过命令去控制RTC的读写操作,系统将不会再从RTC中去获取或者同步设置时间。
linux命令中的date和time等命令都是用来设置系统时间的,而hwclock命令是用来设置和读写RTC时间的。
读系统时间:date
设置系统时间:date -s 011209512012.00 设置系统时间为2012年1月12日9点51分00秒
注:date -s命令设置时间只会影响系统时间,不会设置RTC时间,如果需要把当前系统时间同步设置到RTC中,需要额外调用hwclock命令。
hwclock命令使用:
hwclock -r 读取并打印当前的rtc时间
hwclock -s 读取RTC时间并设置到系统时间中去
hwclock -w 把当前的系统时间设置到RTC中
因此完整的设置RTC的时间可执行如下命令:
date -s 011209512012.00
hwclock -w
另外为了在启动时自动执行RTC时间同步到系统时间,可以把
hwclock -s
加入到rc.local或者rcS文件中。