问题
使用date命令修改时间成功,但是重启后失效
date命令
=> date MMDDhhmmYYYY.ss set
原因
Linux中有硬件时钟和系统时钟两种。硬件时钟:存储在主板上CMOS里,关机后该时钟依然运行,主板的电池为它供电,嵌入式设备有一个RTC模块,硬件时钟即RTC时钟。系统时钟是软件时钟,软件启动后去读取硬件时钟,然后独立运行。
date命令修改的是系统时钟,所以重启后会失效
解决
首先了解下hwclock命令
usage: hwclock [-rswtluf]
-f FILE Use specified device file instead of /dev/rtc (--rtc)
-l Hardware clock uses localtime (--localtime)
-r Show hardware clock time (--show)
-s Set system time from hardware clock (--hctosys)
-t Set the system time based on the current timezone (--systz)
-u Hardware clock uses UTC (--utc)
-w Set hardware clock from system time (--systohc)
在用date修改完系统时间后,通过hwclock命令将系统时间同步到硬件时间
=> hwclock -uw
其中“-w”是将系统时间同步到硬件时间,但是当参数只有“-w”,重启后会发现时间和我们设置的并不一样;这是因为硬件时间是以UTC时间来存取的,所以我们要加个“-u” 来进行时区转换。
总结
date命令修改时间后,将系统时间同步给硬件时间,这样重启后就不会失效了
=> date MMDDhhmmYYYY.ss set
=> hwclock -uw