CentOS 6.9時間與時間服務器相差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

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章