众所周知,在生产环境中时间是一个很重要的概念,尤其是在做数据同步的时候。Linux 一般都是用来做服务器的,服务器一旦运行时间比较久,相应的系统时间也就会存在一定的误差,其实不止是服务器,像手表啊等等一些用来计时相关的,只要使用的时间长都会或多或少的存在误差。既然有误差,那么就需要调整,在 Linux 系统中我们可以使用 date
这个指令进行时间的设置,并且 date
命令使用起来比较灵活方便。但需要注意的是如果在做数据库相关的集群分片或者数据同步等操作时,这时候对时间是有要求的,多台机器之间的时间差不能有太大差别,所以通常这个场景下就需要用到 ntpdate
这个命令来完成时间的同步。
一、关于date
-
如何查看当前系统时间?
date
命令是用来显示系统时间的,可以按照指定格式来显示日期,如果只键入date
则以默认格式显示当前系统时间。例如:$ date
Tue Nov 10 21:36:22 CST 2020当然,我们也可以按照指定的格式来显示日期,例如可以使用 “+” 开头的字符串来指定显示的格式,如下:
$ date +'%Y-%m-%d %H:%M:%S'
2020-11-10 21:37:49 -
如何修改系统时间?
格式:date -s 时间
将时间设置为 2021 年 11 月 10 日:
$ date -s 11/10/21
Wed Nov 10 00:00:00 CST 2021将时间设置为 23 点 20 分 30 秒:
$ date -s 23:20:30
Wed Nov 10 23:20:30 CST 2021将时间设置为 2020 年 11 月 10 日 21 点 46 分 30 秒:
格式:MMDDhhmmYYYY.ss
$ date 1110214620.30
Tue Nov 10 21:46:30 CST 2020最后补充一点,为了避免将时间写入 BIOS 重启失效;当我们进行设置完成 Linux 系统的时间后,还需要用
hwclock
这个命令来刷新一下 BIOS 的时间,因为每次重新启动的时候,系统会重新由 BIOS 将时间读出来,因此通过以下命令可以将时间写入 BIOS:$ hwclock -w
二、同步网络时间
网络时间协议,英文名称:Network Time Protocol(NTP),这个协议是用来让网络设备之间进行时间同步的一个协议。使用 NTP 协议的目的其实就是为了实现时间同步,可以跟一些公网中常用的 NTP 服务同步,也可以比如说你的局域网中自己搭建一个 NTP 服务器,然后所有的设备都来同步它的时间,其实不一定非要说所有的设备时间都要是非常准确的,只要他们之间的时间一致就可以。对于 NTP 协议,既可以作为源来对其他设备进行时间的同步,也可以去同步其他源设备的时间。
-
检查是否安装 ntp 服务
$ rpm -qa ntp
ntp-4.2.6p5-29.el7.centos.2.x86_64 -
检查 ntp 服务是否启动
$ systemctl status ntpd.service
active(running)表示运行成功状态 -
同步服务器时间
$ ntpdate 210.72.145.44
最后补充几个常用的 ntp 服务器:
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国:time.nist.gov
复旦:ntp.fudan.edu.cn
微软公司授时主机(美国) :time.windows.com
台警大授时中心(台湾):asia.pool.ntp.org