Linux系统时间快8小时解决方案

Linux系统时间比现在时间快8小时的解决方法:

1、vi /etc/sysconfig/clock #编辑文件

ZONE="Asia/Shanghai"
UTC=false #设置为false,硬件时钟不于utc时间一致
ARC=false

2、修改localtime

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #linux的时区设置为上海

3、时间同步

yum install ntp #需要先安装ntp服务器 
ntpdate us.pool.ntp.org #对准时间

4、写入

/sbin/hwclock --systohc #设置硬件时间和系统时间一致并校准
至此,linux系统时间和计算机硬件时间都是cst时间了,并且为上海时区。

5、每10分钟与服务器同步

crontab -e
0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP
加入定时计划任务,每隔10分钟同步一下时钟。

有很多朋友会问,我的CMOS时间是正确的当前时间,我的Linux也设置了北京时区,为什么系统的时间比当前快了8小时。
要解决这个问题,首先要确认当前CMOS显示的时间是否是当前的时间,如果是则你的CMOS是非UTC时间(即CST当地时间),要修改

/etc/sysconfig/clock文件,将里面的UTC=true 改为 UTC=false (告诉Linux硬件设置的是当地时间)

这个是多数快8小时的原因,因为安装Linux时默认选项是使用UTC时间(可能国外电脑的CMOS都是设置的UTC时间),系统误认为你的CMOS是UTC时间,而你又选择了+8的时区,所以Linux在CMOS时间上加了8小时作为系统的时间

更改时区

rm /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

读取硬件时间到系统

clock --hctosys

输入Date查看当前是否为 CST时间(CST表示当地时间,如我们设置的Shanghai ),如果时间不正确用以下方式修改时间

date -s 2010-02-03 12:00:00

将系统时间写入硬件

clock --systohc

[自动同步时间的方法]

(1) 开启ntpd服务,即配置ntp服务器实现时间同步。

(2) 利用ntp客户端程序,即ntpdate同步时间。
注意:因为ntp服务器本来就会与上层时间服务器进行同步,所以在默认的情况下,ntp服务器不可以使用ntpdate,也就是说ntpdate和ntpd不能同时启用。

1. 开启ntpd服务同步时间

首先介绍两个可用的ntp服务器
中国ntp服务器:cn.ntp.org.cn
中国教育网:[仅 CERNET IP 可用] | edu.ntp.org.cn |
上海交通大学网络中心NTP服务器:ntp.sjtu.edu.cn

1.1 与ntp服务相关的配置文件和数据文件

(1) /etc/ntp.conf: ntp服务器的主要配置文件
(2) /usr/share/zoneinfo/: 由tzdata所提供,为各时区的时间格式对应文件。例如我国的时区格式对应文件是/usr/share/zoneinfo/Asia/Shanghai。这个目录下的文件与下面要介绍的两个文件clock和localtime是有关系的
(3) /etc/sysconfig/clock: 设置时区与是否使用UTC时钟的配置文件。每次开机后Linux会自动读取这个文件来设置自己系统默认所需要显示的时间。比如说,在我们中国的本地时间设置中,这个文件应该会有一行 ZONE="Asia/Shanghai" 的字样,这表示我们的时间配置文件要使用/usr/share/zoneinfo/Asia/Shanghai那个文件
(4) /etc/localtime: 就是本地端的时间配置文件,Linux会将/usr/share/zoneinfo/Asia/Shanghai这个文件内容复制到/etc/localtime中,未来我们的时间显示就以Shanghai这个配置文件为准。

1.2 ntp服务配置

(1) 首先编辑ntp.conf文件

[root@node1 ~]# vim /etc/ntp.conf 
# 处理权限问题
restrict 127.0.0.1      #这两个是默认值,放行本机来源
restrict -6 ::1

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap  # 放行局域网来源

# 设置主机来源,请将原来的[0|1|2|3].centos.pool.ntp.org设置注释掉
restrict cn.pool.ntp.org        # 放行cn.pool.ntp.org进入本ntp服务器
server cn.pool.ntp.org prefer   # 以这台主机为优先
server ntp.sjtu.edu.cn

(2) 启动ntp服务,并观察

# 启动ntpd服务
[root@node1 ~]# service ntpd start
# 配置开机自启
[root@node1 ~]# chkconfig ntpd on

# 查看同步状态,注意:需要一段时间,才能同步成功
[root@node1 ~]# ntpstat
synchronised to NTP server (85.199.214.100) at stratum 2 
   time correct to within 325 ms
   polling server every 128 s

[root@node1 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*85.199.214.100  .GPS.            1 u   35   64  377  310.011  -10.192   3.191

2. ntpdate同步时间

(1) 手动同步时间

[root@node1 ~]# ntpdate cn.pool.ntp.org
 3 Jun 18:06:16 ntpdate[2317]: adjust time server 202.112.29.82 offset -0.007719 sec
#注意:如果会出现以下提示:no server suitable for synchronization found
#加入-u参数,来同步时间

ntpdate -u cn.pool.ntp.org
#时间同步完成后,执行命令hwclock -w,将当前系统时间写入BIOS。另外hwclock -r可读取BIOS中的时间

(2) 配置定时任务,同步时间

[root@node1 ~]# crontab -e
# 每过半个小时同步一次
0 */30 * * * /usr/sbin/ntpdate -u cn.pool.ntp.org > /dev/null 2>&1; /sbin/hwclock -w

(3) 配置开启启动校验

编辑/etc/rc.d/rc.local文件(vim /etc/rc.d/rc.local),在文件末尾添加如下内容

/usr/sbin/ntpdate -u cn.pool.ntp.org> /dev/null 2>&1; /sbin/hwclock -w

你可能感兴趣的:(Linux系统时间快8小时解决方案)