linux同步网络时间

Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步。

一、修改时区:

# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改为中国的东八区

# vi /etc/sysconfig/clock

ZONE="Asia/Shanghai"

UTC=false

ARC=false

二、配置新的时间

日期设定:

# date -s 2017/03/06

时间设定:

# date -s 18:40:00

查看硬件时间(BIOS的):

hwclock [-rw]

-r:查看现有BIOS时间,默认为-r参数

-w:将现在的linux系统时间写入BIOS中

注:当我们进行完 Linux 时间的校时后,还需要以 hwclock -w 来更新 BIOS 的时间,因为每次开机的时候,系统会重新由 BIOS 将时间读出来,所以, BIOS 才是重要的时间依据。

[root@linuxidc ~]# hwclock -r

Wed 02 Nov 2016 02:53:35 AM CST -0.632895 seconds

同步BIOS时钟,强制把系统时间写入CMOS:

# clock -w

三、实现Internet时间同步(这里可以忽略上面两步)

方法1. 开机的时候自动网络校时:

vi /etc/rc.d/rc.local

/usr/sbin/ntpdate -u 192.168.0.2 192.168.0.3 192.168.0.4; /sbin/hwclock -w

#这里几个IP是公司内部的NTP服务器

方法2. 设定计划任务

crontab格式如下:

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * command to be executed

设定crontab计划任务自动校时:

使用命令crontab -e

crontab -e

10 5 * * * root /usr/sbin/ntpdate -u 210.72.145.44;hwclock -w

这样每天5:10自动进行网络校时,并同时更新BIOS的时间

-------------------------------------------------------------------------------

同步网络时间:输入ntpdate time.nist.gov同步网络时间

3.111#ntpdate -u  ntp.api.bz
10 May 15:50:59 ntpdate[1762]: adjust time server 114.118.7.163 offset 0.000216 sec

 

 

#出现以上信息说明同步成功#

注:如提示命令不存在,直接输入:yum install ntp -y 安装ntp软件包。

注:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found

-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;

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

注:经测试中国国家授时中心与NTP上海服务器可以正常同步时间,注意需要加上-u参数越过防火墙与主机同步!

 

 

你可能感兴趣的:(linux学习)