CentOS 6.9时间与时间服务器相差1小时(时区问题,经过查看时区是蒙古时区,蒙古时区与亚洲上海时区相差1小时)

项目上服务器与时间服务器同步时间后,总是比实际时间快一个小时

CentOS 6.9时间与时间服务器相差1小时(时区问题,经过查看时区是蒙古时区,蒙古时区与亚洲上海时区相差1小时)_第1张图片

clock	
英[klɒk]
美[klɑːk]
n.	时钟; 钟;
v.	达到(某时间或速度); 测…的速度; 注意到; 认出;

首先查看时区:

date --help 获取帮助
[root@db02 ~]# date -R
Mon, 13 Aug 2018 11:10:04 +0800
[root@db02 ~]# date +%z
+0800
#我们国家的东八区(+0800)

最后的解决方案:

 

1.修改/etc/sysconfig/clock文件:

这个文件其实也不包含在NTP 的 daemon 当中,因为这个是 Linux 的主要时区设定文件。每次开机后,Linux 会自动的读取这个文件来设定自己系统所默认要显示的时间。
 

vi /etc/sysconfig/clock                  //执行这个命令,编辑/etc/sysconfig/clock文件

# The time zone of the system is defined by the contents of /etc/localtime.
# This file is only for evaluation by system-config-date, do not rely on its
# contents elsewhere.
ZONE="Asia/Shanghai"        //这个位置把Asia/Ulaanbaatar改为Asia/Shanghai
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
~                                                                                                                        
"/etc/sysconfig/clock" 4L, 196C

2.删除/etc/localtime文件:

[root@centeros6 etc]# rm /etc/localtime     //删除/etc/localtime文件
rm:是否删除普通文件 "/etc/localtime"?yes        //此处输入yes执行删除
[root@centeros6 etc]# ls        //通过ls命令查看已经删除
abrt                     dracut.conf.d     kdump.conf        pcmcia                        scl
acpi                     drirc             krb5.conf         pinforc                       securetty
adjtime                  enscript.cfg      latrace.conf      pkcs11                        security
aliases                  environment       latrace.d         pki                           selinux
aliases.db               ethers            ld.so.cache       plymouth                      services
alsa                     exports           ld.so.conf        pm                            sestatus.conf
alternatives             favicon.png       ld.so.conf.d      pm-utils-hd-apm-restore.conf  setuptool.d
anacrontab               festival          libaudit.conf     pnm2ppa.conf                  sgml
anthy-conf               filesystems       libnl             polkit-1                      shadow
asound.conf              firefox           libreport         popt.d                        shadow-
at.deny                  fonts             libuser.conf      portreserve                   shells
audisp                   foomatic          login.defs        postfix                       skel
audit                    fprintd.conf      logrotate.conf    ppp                           smartd.conf
autofs.conf              fstab             logrotate.d       prelink.cache                 sos.conf
autofs_ldap_auth.conf    gai.conf          lsb-release       prelink.conf                  sound
auto.master              gconf             lsb-release.d     prelink.conf.d                ssh
auto.misc                gcrypt            ltrace.conf       printcap                      ssl
auto.net                 gdm               lvm               profile                       sssd
auto.smb                 ghostscript       magic             profile.d                     statetab
avahi                    gnome-vfs-2.0     mailcap           protocols                     statetab.d
bash_completion.d        gnupg             mail.rc           pulse                         sudo.conf
bashrc                   group             makedev.d         purple                        sudoers
blkid                    group-            man.config        quotagrpadmins                sudoers.d
bluetooth                grub.conf         maven             quotatab                      sudo-ldap.conf
bonobo-activation        gshadow           mime.types        rc                            sysconfig
cas.conf                 gshadow-          mke2fs.conf       rc0.d                         sysctl.conf
centos-release           gssapi_mech.conf  modprobe.d        rc1.d                         sysctl.d
certmonger               gtk-2.0           motd              rc2.d                         system-release
chkconfig.d              hal               mtab              rc3.d                         system-release-cpe
ConsoleKit               host.conf         mtools.conf       rc4.d                         terminfo
cron.d                   hostname          my.cnf            rc5.d                         Trolltech.conf
cron.daily               hosts             nanorc            rc6.d                         udev
cron.deny                hosts.allow       netconfig         rc.d                          updatedb.conf
cron.hourly              hosts.deny        NetworkManager    rc.local                      vimrc
cron.monthly             hp                networks          rc.sysinit                    virc
crontab                  httpd             nfsmount.conf     rdma                          vmware-caf
cron.weekly              idmapd.conf       nsswitch.conf     readahead.conf                vmware-tools
crypttab                 init              ntp               redhat-lsb                    warnquota.conf
csh.cshrc                init.conf         ntp.conf          redhat-release                wgetrc
csh.login                init.d            obex-data-server  request-key.conf              wpa_supplicant
cups                     inittab           oddjob            request-key.d                 X11
dbus-1                   inputrc           oddjobd.conf      resolv.conf                   xdg
default                  ipa               oddjobd.conf.d    rpc                           xinetd.d
depmod.d                 iproute2          openldap          rpm                           xml
dhcp                     issue             opt               rsyslog.conf                  yp.conf
DIR_COLORS               issue.net         PackageKit        rsyslog.d                     yum
DIR_COLORS.256color      java              pam.d             rwtab                         yum.conf
DIR_COLORS.lightbgcolor  jvm               pango             rwtab.d                       yum.repos.d
dnsmasq.conf             jvm-commmon       passwd            samba
dnsmasq.d                kde               passwd-           sane.d
dracut.conf              kdump-adv-conf    pbm2ppa.conf      sasl2

3.复制文件:

[root@centeros6 etc]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -R  //复制文件
[root@centeros6 etc]# vi /etc/localtime

4.设置Linux硬件时间, 可以用hwclock或者clock命令。两者基本相同,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

该命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

root@centeros6 etc]# hwclock -w     //-w参数是将硬件时钟设置为当前的系统时间,执行这个命令的目的主要是要写入硬件,避免重启失效。

5. 执行ntpdate 10.180.45.91命令进行同步时间:

[root@centeros6 ~]# ntpdate 10.180.45.91
26 May 19:08:34 ntpdate[3877]: adjust time server 10.180.45.91 offset -0.042970 se

6.通过date命令查看时间,显示正常了:

[root@centeros6 etc]# date
2020年 05月 26日 星期二 19:09:17 CST

说明:

一般在操作系统中都会有两个时钟,硬件时钟是主板上的定时器时钟,系统时钟是系统的内核时钟,它们相互不影响。

概念:Linux时间有两个

系统时间:也叫软件时间(sys), 1970年1月1日到当前时间的秒数

BOIS时间:也叫硬件时间(hc)

  1)硬件时钟

  这个时钟,运行独立于任何控制程序运行在CPU中,甚至当机器关闭。在ISA系统中,这个时钟被指定为ISA标准的一部分。控制程序可以读取或设置这个时钟为整秒,但控制程序也可以检测1秒时钟的边缘,因此该时钟实际上具有无限的精度。

  这种时钟通常被称为硬件时钟、实时时钟、RTC、BIOS时钟和CMOS时钟。硬件时钟以其大写的形式被hwlock所发明,因为其他所有的名称都不适合误导。例如,一些非ISA系统有几个实时时钟。一个非常低功耗的I2C或SPI时钟芯片可以与备用电池一起作为硬件时钟,以初始化一个功能更好的集成实时时钟,用于大多数其他用途。

  2)系统时钟

  这是由Linux内核内的时钟保持的时间,由计时器中断驱动。(在ISA机器上,计时器中断是ISA标准的一部分)。它只有在linux在机器上运行时才有意义。系统时间是从1970年世界协调时(UTC)1月1日00:00开始的秒数(或者更简洁地说,是1969年以来的秒数)。不过,系统时间不是整数,它实际上是无限的。系统时间是重要的时间。Linux系统中硬件时钟的基本目的是在Linux不运行时保持时间。在Linux启动时,将系统时间从硬件时钟初始化,然后不再使用硬件时钟。请注意,在设计ISA的DOS中,硬件时钟是唯一的实时时钟。

  重要的是,当系统运行时,系统时间不存在任何不连续性,比如使用date命令来设置它。但是,在系统运行时,您可以对硬件时钟做任何您想做的事情,而下一次Linux启动时,它将使用硬件时钟的调整时间进行设置。

  Linux内核维护系统的本地时区的概念。但是不要被误导-几乎没有人关心内核认为它在哪个时区。相反,关心时区的程序(可能因为他们想为您显示本地时间)几乎总是使用更传统的方法。确定时区:它们使用“tz”环境变量或“/usr/share/zoneinfo”目录,如tzset(3)的手册页所解释的那样。时区值是错误的,vFAT文件系统会在文件上报告并设置错误的时间戳。

  当您使用”--hctosys”选项设置系统时间时,hwlock将内核时区设置为“tz”或“/usr/share/zoneinfo”所指示的值。

  时区值实际上由两部分组成:1)字段“tz_minutesWest”表示本地时间(未根据DST进行调整)滞后于UTC;2)字段“tz_dsttime”,指示当前在本地有效的夏令时(DST)约定的类型。第二个字段不在Linux下使用,始终为零。

  3)hwclock如何访问硬件时钟

  hwlock使用多种不同的方法来获取和设置硬件时钟值,最常见的方法是对设备特殊文件“/dev/rtc”执行I/O操作,假定该文件是由rtc设备驱动程序驱动的。然而,这种方法并不总是可用的。首先,rtc驱动程序是linux中比较新的一种。此外,虽然有一些版本的rtc驱动程序可以在decalpha上工作,但似乎有大量的alpha无法工作(常见的症状是时钟挂起)。此外,最近的linux系统对rtc有更多的通用支持,甚至支持不止一个的系统,所以您可能需要通过指定/dev/rtc 0或/dev/rtc 1来覆盖默认值。

  在旧系统中,访问硬件时钟的方法取决于系统硬件。

  在ISA系统中,hwlock通过对端口0x70和0x71进行I/O操作,可以直接访问构成时钟的“CMOS存储器”寄存器。它使用实际的I/O指令,因此只有在超级用户有效用户ID的情况下才能这样做。(对于jensen Alpha,hwlock无法执行这些I/O指令,因此它使用设备文件“/dev/port”,它提供了与I/O子系统几乎一样低的接口)。这是一种非常糟糕的访问时钟的方法,因为用户空间程序通常不应该进行直接I/O和禁用中断。但是在ISA和Alpha系统中,这是唯一的方式。

  在m68k系统上,hwlock可以通过控制台驱动程序访问时钟,通过设备文件“/dev/tty1”访问时钟。

  hwlock尝试使用文件“/dev/rtc”。如果内核没有编译“/dev/rtc”,或者它无法打开“/dev/rtc”,那么hwlock将返回到另一种方法(如果可用的话)。在ISA或Alpha计算机上,您可以强制hwclock使用CMOS寄存器的直接操作,而无需通过指定“--directisa”选项。

  4)校准功能adjust

  硬件时钟通常不是很精确,但是它的许多不准确是完全可以预测的,它每天得到或失去相同的时间。这被称为系统漂移。hwlock的“调整”功能允许您进行系统校正以纠正系统漂移。它的工作方式如下:hwlock保存了一个文件“/etc/adjtime”,它保存了一些历史信息。

  假设您从没有adjtime文件开始,发出hwlock-set命令将硬件时钟设置为真实的当前时间。hwlock创建adjtime文件,并在其中记录当前时间,作为最后一次校准时钟。5天后,时钟增加了10秒,因此您可以发出另一个“hwlock --set”命令来设置它。返回10秒。hwlock更新adjtime文件,显示当前时间作为最后一次校准时钟,并以系统漂移速率记录每天2秒。24小时过去,然后发出“hwlock --adjust”命令。hwlock查阅adjtime文件,看到时钟离开时每天增加2秒。一个人呆了整整一天。所以它从硬件时钟中减去2秒。然后,它记录当前时间作为最后一次调整时钟的时间。又过了24小时,你又发出了另一个“hwclock --adjust”指令。hwclock做了同样的事情:减去2秒,用当前时间更新adjtime文件,这是最后一次调整时钟。

  每次您校准时钟(使用--set或—systohc)时,hwlock根据上次校准的时间、上次调整后的时间、在任何中间的调整中假定的漂移率以及时钟当前的关闭量,重新计算系统漂移率。在hwclock使用的任何时候,都会出现少量的误差,因此它不会进行小于1秒的调整。稍后,当您再次请求调整时,累积漂移将超过1秒钟,而hwlock则会进行调整。

  在系统启动时,在“hwlock --hctosys”之前进行hwlock的调整是很好的,并且在系统通过cron运行时也可以定期进行调整。

  虽然adjtime文件的命名仅仅是为了控制时间调整的历史记录,但它实际上包含了hwlock在从一个调用到下一个调用时记忆信息时使用的其他信息。adjtime文件的格式是ASCII:

  第1行的3个数字数字,用空格隔开,分别代表:a)系统漂移率,每天以秒为单位,浮点小数点;b)自1969年世界协调时以来最近调整或校准的秒数,小数整数;c)零(与时钟(8)兼容)为十进制整数。

  第2行一个数字,代表自1969年世界协调时以来最近一次校准产生的秒数。如果还没有校准,或者已知任何先前的校准都是没有意义的,那么值就是0(例如,因为在校准之后,硬件时钟已经被找到,不包含有效时间)。这是一个十进制整数。

  第3行是“utc”或“local”。指示硬件时钟是设置为协调世界时间还是设置为本地时间。

  5)内核如何自动同步硬件时钟

  在某些系统中,您应该注意到硬件时钟保持同步的另一种方式。Linux内核有一种模式,它每11分钟将系统时间复制一次到硬件时钟。这是一个很好的模式,当您使用一些复杂的东西,比如NTP来保持系统时间同步时。(NTP是一种保持系统时间同步的方法,它可以与网络上的某个时间服务器或连接到您的系统的无线电时钟保持同步。参见RFC 1305)。

  这个模式(我们称之为“11分钟模式”)是关闭的,直到有东西打开它。ntp守护进程xntpd就可以打开它。您可以通过运行任何东西来关闭它,包括“hwlock --hctosys”,它以老式的方式设置系统时间。

  如果你的系统以11分钟的模式运行,不要使用“hwlock --adjust”或“hwlock-hctosys”。在启动时使用“hwlock --hctosys”来获得一个合理的系统时间是可以接受的,直到您的系统能够运行为止。从外部源设置系统时间并启动11分钟模式

 

ntpd服务的相关设置文件如下:

(1)/etc/ntp.conf:这个是NTP daemon的主要设文件,也是 NTP 唯一的设定文件。

(2)/usr /share/zoneinfo/:在这个目录下的文件其实是规定了各主要时区的时间设定文件,例如北京地区的时区设定文件在 /usr/share/zoneinfo/Asia/Shanghai 就是了。这个目录里面的文件与底下要谈的两个文件(clock 与localtime)是有关系的。

(3)/etc/sysconfig/clock:这个文件其实也不包含在NTP 的 daemon 当中,因为这个是 Linux 的主要时区设定文件。每次开机后,Linux 会自动的读取这个文件来设定自己系统所默认要显示的时间。

(4)/etc /localtime:这个文件就是"本地端的时间配置文件"。刚刚那个clock 文件里面规定了使用的时间设置文件(ZONE) 为 /usr/share/zoneinfo/Asia/Shanghai ,所以说,这就是本地端的时间了,此时, Linux系统就会将Shanghai那个文件另存为一份 /etc/localtime文件,所以未来我们的时间显示就会以Beijing那个时间设定文件为准。

 

网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。

protocol	
英[ˈprəʊtəkɒl]
美[ˈproʊtəkɑːl]
n.	礼仪; 外交礼节; 条约草案; 议定书; (协议或条约的) 附件; (数据传递的) 协议,规程,规约;

 相关的内容可以参考这两篇博客,写的比较好,可以参考:

https://www.cnblogs.com/ibnode/p/3573302.html

https://blog.51cto.com/sandshell/2158984

 

 

 

 

 

 

 

 

你可能感兴趣的:(Linux)