一:问题
1.问题描述
初学Linux(虚拟机)的小伙伴(俺也是)可能会遇到这种问题:把时区设置成了东八区,时间也修改成了正确的,但是重启之后,时间又不对了
2.问题原因
分析
在Linux计算机上,有2个时间,一个是硬件时间(BIOS中记录的时间,称为hwclock),另一个是操作系统时间(osclock)
硬件时钟由BIOS电池供电,在虚拟机中,一旦关机或者挂起,就会影响硬件时间
当计算机关机后,会继续运行
在Linux系统中,默认使用的是UTC时间
即使在安装系统的时候,选择的时区是亚洲上海,Linux默认的BIOS时间(也称:硬件时间)也是UTC时间
在重启之后,系统时间会和硬件时间同步,如果两者不一致,会以硬件时间为标准进行时间的校准
所以,之前设置的时区和时间就失效了
UTC
UTC:协调世界时(Universal Time Coordinated) 英文缩写
是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度
UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示
北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整
3.查看时间的相关命令
# 查看当前系统时间
date
# 查看当前硬件时间
hwclock
二:解决方法
1.方法1 - 定时同步
① 把当前时区调整为上海(东8区)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
② 同步标准时间
# 安装时间同步工具ntpdate(如已安装,请忽略)
yum install ntpdate -y
# 用工具ntpdate同步时间
ntpdate us.pool.ntp.org
③ 加入定时计划,每隔5分钟 同步1次时间
# 配置定时任务
crontab -e
# 按i进入插入模式,输入以下内容
0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP
2.方法2
① 编辑时间配置文件
# 用vim打开配置(如果没装vim,可以把vim换成vi)
vim /etc/sysconfig/clock
# 按i进入插入模式,输入以下内容(# 注释可以不复制)
ZONE="Asia/Shanghai"
UTC=false # 设置为false,硬件时钟不于utc时间一致
ARC=false
② 将Linux时区设置为上海
# 建立同步连接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
③ 同步标准时间
# 安装时间同步工具ntpdate(如已安装,请忽略)
yum install ntpdate -y
# 用工具ntpdate同步时间
ntpdate us.pool.ntp.org
④ 设置硬件时间和系统时间一致并校准
/sbin/hwclock --systohc