因为经常使用虚拟机做实验,但是有时用,有时不用就造成了本地时间和internet时间不同步的问题,也会出现虚拟机在更新软件源或者下载软件的时候特别的慢。
一边总结一下知识,一边解决问题!
1、时间知识
1.1 系统时间与硬件时间
系统时间: 一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。
硬件时间: 主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。
1.2 UTC时间与本地时间
UTC时间:Coordinated Universal 8 e2 i( H7 t0 ^/ ^Time 世界协调时间(又称世界标准时间、世界统一时间),在一般精度要求下,它与GMT(Greenwich Mean Time,格林威治标准时间)是一样的,其实也就是说 GMT≈UTC,但 UTC 是以原子钟校准的,更精确。
本地时间:由于处在不同的时区,本地时间一般与UTC是不同的,换算方法就是本地时间 = UTC + 时区 或 UTC = 本地时间 - 时区。时区东为正,西为负,例如在中国,本地时间都使用北京时间,在linux上显示就是 CST(China Standard Time,中国标准时,注意美国的中部标准时Central Standard Time也缩写为CST,与这里的CST不是一回事!),时区为东八区,也就是 +8 区,所以 CST=UTC+(+8小时) 或 UTC=CST-(+8小时)。
2、常用时间命令
2.1 date命令
这个命令就非常简单了,就一个date就行了,再加上其他复杂参数也没意义。
2.2 timedatectl命令
timedatectl命令是用来查看和设置时间和时区的。用起来也非常简单!
1.显示系统的当前时间和日期
# timedatectl status #结果中RTC time就是硬件时钟的时间。
2.Linux系统上的time总是通过系统的timezone设置的,查看当前时区:
# timedatectl | grep Time
3.查看所有可用的时区:
# timedatectl list-timezones
4.根据地理位置找到本地的时区:
# timedatectl list-timezones | egrep -o “Asia/B.*”
# timedatectl list-timezones | egrep -o “Europe/L.*”
# timedatectl list-timezones | egrep -o “America/N.*”
5.在Linux中设置本地时区,使用set-timezone开关:
# timedatectl set-timezone “Asia/shagnhai”
6.可以使用timedatectl命令设置系统的日期和时间:
# timedatectl set-time 20:46:30 #只设置时间的话可以使用set-time开关以及HH:MM:SS(小时,分,秒)的时间格式。
7.只设置日期的话可以使用set-time开关以及YY:MM:DD(年,月,日)的日期格式。
# timedatectl set-time 20200224
8.设置日期和时间:
# timedatectl set-time '20:47:36 2020-02-24'
9.设置硬件时钟为UTC可以使用 set-local-rtc boolean-value选:
# timedatectl | grep local #首先确定硬件时钟是否设置为本地时区:
# timedatectl set-local-rtc 1 #将硬件时钟设置为本地时区:
# timedatectl set-local-rtc 0 #将硬件时钟设置为UTC:
10.NTP时间
# 启动NTP时间同步(启用NTP服务或者Chrony服务):timedatectl set-ntp true
# 禁用NTP时间同步:timedatectl set-ntp false
2.3 hwclock命令
hwclock命令即hardwareclock系统硬件时间。
hwclock
显示硬件时间
hwclock -w
将系统时间写入到系统硬件当中
2.4 ntpdate
ntpdate 是一个linux时间同步服务软件,如果没有安装,请 yum install -y ntpdate
3、修复时间问题
首先,同步网络时间
ntpdate time1.aliyun.com
然后,同步硬件时间
hwclock -w
4、设置时间自动同步
设置时间同步有两种思路:一是设置定时任务、二是安装NTP自动更新
4.1 设置定时任务更新时间
使用crontab来实现自动更新时间。
crontab -l # 表示列出所有的定时任务
crontab -r # 表示删除用户的定时任务,当执行此命令后,所有用户下面的定时任务会被删除
crontab -e # 创建一个定时任务
定义规则 整点同步
crontab -e
0 * * * * root ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1;hwclock -w
4.2 安装NTP更新时间
首先要先安装ntp
yum install ntp
配置开机时自动运行时间服务
chkconfig ntpd on
开启ntp服务
cd /etc/
/bin/systemctl start ntpd.service
查看一下是否启动
ps -aux| grep ntpd
同步时间
ntpdate -u ntp1.aliyun.com
ntpq -p
评论区