CENTOS上的时间/时区设定

系统时间的显示会和实际出现不同步,这里面经常会碰到的问题主要有时区设定/系统时钟/RTC/NTP,这篇文章将相关问题简单整理一下。

概念说明

几个常见的概念,进行总结如下:

项目 说明
时区 因时区不同显示的时间不同,牵扯到夏令时和调整等问题,date命令可查看
系统时钟:System Clock linux OS的时间,date命令可查看
硬件时钟:RTC:Real Time Clock 主板上由电池供电的BIOS时间,hwclock -r可查看
NTP: Network Time Protocol 本机时间和实际的时间之间的经常会有差别,一般使用NTP服务器进行时间校准

SC和RTC

系统时间和硬件时间查看

[root@devops ~]# hwclock -r ; date;
Sat 03 Feb 2018 09:18:26 AM EST  -0.692300 seconds
Sat Feb  3 09:19:19 EST 2018
[root@devops ~]#

从这里可以看出,系统时间和硬件时间已经由几十秒的不同步了

同步系统时间和硬件时间

使用hctosys选项可将硬件时间设定到系统时间上,反向操作使用systohc即可,以下是硬件时间->系统时间调整的例子:

[root@devops ~]# hwclock -r ; date; hwclock --hctosys; hwclock -r; date;
Sat 03 Feb 2018 09:29:38 AM EST  -0.921131 seconds
Sat Feb  3 09:30:27 EST 2018
Sat 03 Feb 2018 09:29:40 AM EST  -1.080703 seconds
Sat Feb  3 09:29:40 EST 2018
[root@devops ~]# 

但是时间还是会经常性发生gap,以某个时间为主的话建议在使用之前确认或者同步一下更为准确。

NTP服务

NTP服务器

有很多可以用于NTP校时的服务器,比如:

  1. server 0.cn.pool.ntp.org
  2. server 1.cn.pool.ntp.org
  3. server 2.cn.pool.ntp.org
  4. server 3.cn.pool.ntp.org

安装ntp和ntpdate

我们可以设定自己的ntpd服务用于校时,也可以用ntpdate命令随时确认和调整,在此之前需要先行安装相关的package

[root@devops ~]# yum install -y ntp ntpdate

调整偏移时间

使用ntpdate可以进行调整,如果向本例中的情形,时间会出现很大的跳跃,往往会给应用带来很多影响,一般实时性较高的应用都需要搭建内部的ntp服务器,由一台作为核准的服务器,其余与之关联,而且调整的节奏要注意性能和频度,同时最好结合硬件时钟进行同步。

[root@devops ~]# date; ntpdate 0.cn.pool.ntp.org
Sat Feb  3 09:50:49 EST 2018
 3 Feb 18:30:16 ntpdate[25285]: step time server 173.255.246.13 offset 31151.519278 sec
[root@devops ~]# date
Sat Feb  3 18:30:18 EST 2018
[root@devops ~]#

时区

date命令所显示的EST为美国六大时区中的一个,Eastern Standard Time 东部时区,比如纽约和华盛顿,与北京时间相差13个小时,我们比他们早13个小时,当他们昨天还没有过完的时候,我们已经开始了新的一天。
CENTOS上的时间/时区设定_第1张图片

设定文件

/usr /share/zoneinfo/

在这个目录下放置的是各主要时区的时间设定文件

[root@devops ~]# ls /usr/share/zoneinfo/
Africa      Atlantic   Chile    Eire     GB       GMT+0      Indian       Japan      MST      Pacific     PRC      Singapore  UTC           Zulu
America     Australia  CST6CDT  EST      GB-Eire  Greenwich  Iran         Kwajalein  MST7MDT  Poland      PST8PDT  Turkey     WET
Antarctica  Brazil     Cuba     EST5EDT  GMT      Hongkong   iso3166.tab  Libya      Navajo   Portugal    right    UCT        W-SU
Arctic      Canada     EET      Etc      GMT0     HST        Israel       MET        NZ       posix       ROC      Universal  zone1970.tab
Asia        CET        Egypt    Europe   GMT-0    Iceland    Jamaica      Mexico     NZ-CHAT  posixrules  ROK      US         zone.tab
[root@devops ~]# 

比如常用的Asia/Shanghai

[root@devops ~]# file /usr/share/zoneinfo/Asia/Shanghai 
/usr/share/zoneinfo/Asia/Shanghai: timezone data, version 2, 2 gmt time flags, 2 std time flags, no leap seconds, 16 transition times, 2 abbreviation chars
[root@devops ~]#
[root@devops ~]# more /usr/share/zoneinfo/Asia/Shanghai 
TZif2--More--(80%)
CST-8
[root@devops ~]#

/etc /localtime

本地时间配置文件, 此文件一般为/etc/share/zoneinfo下面的文件的软链接,比如当前EST时间,可以清晰地看出其实际是链接到纽约的时间

[root@devops ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 38 Jan 18 17:02 /etc/localtime -> ../usr/share/zoneinfo/America/New_York
[root@devops ~]#

我们将其改变为Asia/Shanghai

[root@devops ~]# rm /etc/localtime
rm: remove symbolic link ‘/etc/localtime’? y
[root@devops ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@devops ~]# ls -l /etc/localtime 
lrwxrwxrwx. 1 root root 33 Feb  4 08:15 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
[root@devops ~]#

而此时,时间已经实时地被调整为CST

[root@devops ~]# date
Sun Feb  4 08:15:46 CST 2018
[root@devops ~]# 

/etc/sysconfig/clock

在每次开机是Linux 会自动的读取此文件来以设定自己系统所默认要显示的时间,设定的内容主要有如下三项:

项目 说明 常用设定值
UTC 指定BIOS中保存的时间是否是GMT/UTC时间 true:UTC时间,false:本地时间
ZONE 指定时区,其值是一个/usr/share/zoneinfo下的时区文件的相对路径名 “Asia/Shanghai”
UTC 硬件时钟是否要和UTC一致 false
ARC 特殊硬件设定 一般设定为false,一些特殊的硬件会设定为true
SRM 特殊硬件设定 一般设定为false,一些特殊的硬件会设定为true

没有此文件,直接vi编辑一个即可

[root@devops ~]# vi /etc/sysconfig/clock
[root@devops ~]# 
[root@devops ~]# cat /etc/sysconfig/clock 
ZONE="Asia/Shanghai"
UTC=false
ARC=false
SRM=false
[root@devops ~]#

时间如果发生错乱,可以使用hwclock的systohc进行调整

[root@devops ~]# date;
Sun Feb  4 08:18:43 CST 2018
[root@devops ~]# 
[root@devops ~]# hwclock -r
Sat 03 Feb 2018 11:38:11 PM CST  -0.308882 seconds
[root@devops ~]# hwclock --systohc
[root@devops ~]# hwclock -r
Sun 04 Feb 2018 08:19:08 AM CST  -0.955669 seconds
[root@devops ~]#

你可能感兴趣的:(Unix/Linux)