最近遇到服务器时间不对的问题,原因是安装的时候没有配置自动更新时间(NTP),所以咱只能自己动手来给它配置个自动更新时间。
前面的是手动配置的,后来发现有更简单的方法,建议省事直接看文章末尾。
!> 以下教程使用CentOS 7.8为例
一、配置服务器时区信息
首先要选择确定你的服务器使用的时区,一般咱们都用Asia/Shanghai,CentOS当前时区信息存储在/etc/localtime
中,但是不需要我们手动修改,实际上也不能手动改,我们从系统预设的时区文件/usr/share/zoneinfo
中,拷贝对应的时区文件过去覆盖就可以了。使用下面的命令修改服务器的时区。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
接下来还有一个配置文件/etc/sysconfig/clock
需要修改(没有需要自建一个),配置文件里面的参数和hwclock命令关系很大,系统在启动的时候读取/etc/sysconfig/clock
文件的内容,根据这些内容调用hwclock命令,使用vi/vim打开/etc/sysconfig/clock
。
vim /etc/sysconfig/clock
添加如下内容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
配置文件支持UTC,ARC,SRM,ZONE这几个参数,详解如下:
UTC指定BIOS中保存的时间是否是GMT/UTC时间,true表示BIOS里面保存的时间是UTC时间,false表示BIOS里面保存的时间是本地时间。
ZONE指定时区,ZONE的值是一个文件的相对路径名,这个文件是相对/usr/share/zoneinfo
目录下的一个时区文件。比如ZONE的值可以是:“Asia/Shanghai”, “US/Pacific”, “UTC” 等。
ARC这个参数一般配置false,在一些特殊硬件(Alpha)下才配置该参数为true。
SRM同ARC,该参数一般配置false,在一下特殊硬件下才配置该参数为false。
二、安装NTP客户端
直接yum安装即可:
yum -y install ntp
三、手动同步一次时间
这里需要选定一个NTP服务器,可以使用ping测试一下连通性,如果NTP服务无效会报错“no server suitable for synchronization found”。
中国区可以使用这几个NTP服务器: ntp.api.bz、cn.pool.ntp.org、pool.ntp.org、time.nist.gov。
四、更新硬件时间信息
通过NTP客户端更新的系统的时间,当服务器重启后,服务器会从BIOS中读取时间初始化,所以我们需要将时间信息更新进BIOS。
hwclock -w # 写入硬件时间
hwclock -r # 读取硬件时间
五、开机时自动更新时间
编辑/etc/rc.d/rc.local
配置用户开机自动启动程序,添加如下命令:
/usr/sbin/ntpdate -u ntp.api.bz > /dev/null 2>&1
/sbin/hwclock -w
六、配置定时任务
编辑/etc/crontab
配置定时任务,每隔分钟更新一次时间,添加如下命令:
00 10 * * * /usr/sbin/ntpdate -u ntp.api.bz > /dev/null 2>&1; /sbin/hwclock -w
七、开机不自动更新问题解决
在rc.local
文件中有写到,强烈建议使用自己创建的服务或者udev规则来运行脚本,而不是使用此文件,和之前的版本相比,这个脚本不会自动运行,必须给他授权才可以。
chmod +x /etc/rc.d/rc.local
此外还可能是没有启动rc-local服务:
systemctl list-units --type=service # 查看所有的开启启动项目里面有没有rc-local这个服务
systemctl status rc-local.service # 查看rc-local服务当前状态
如果有并且开启了,就不用管了,没有开启我们自己开启一下。
systemctl enable rc-local.service
systemctl start rc-local.service
服务的启动文件存放在/lib/systemd/system/
目录下面
另一个更简单的方法
也不能说之前的一顿操作猛如虎都白费了,只要能了解一下同步机制吧。
安装NTP,并启动服务,然后手动同步一次时间。
yum install ntp
systemctl start ntpd
systemctl enable ntpd
ntpdate pool.ntp.org
ntpstat
还有一个命令timedatectl可以查看ntp服务同步状态。