centos 7 时间服务器?centos7联网

【UTC】CentOS7修改时区的正确姿势

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。

格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】

夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)

RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。

Centos7修改系统时区timezone ,解决快、慢8小时问题

如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。

服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。

# timedatectl

我们可以看到,服务器使用的CST时间

# timedatectl set-timezone UTC

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"

# timedatectl

我们可以看到,服务器时间类型更改为UTC了

# ll /etc/locatime

lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC

实际上是做了一个将 

 文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC

# ln -s /usr/share/zoneinfo/UTC  /etc/localtime

ln:无法创建符号链接"/etc/localtime":文件已存在

# ln -sf /usr/share/zoneinfo/UTC   /etc/localtime

做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"   //只设置时分秒

# timedatectl

# clock -w

# date -u  //显示UTC时间

CentOS7修改时区的正确姿势

CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。

正确的修改CentOS7时区的姿势:

#  ln -sf/usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

其他系统的修改文件可能是/var/etc/localtime.

错误的姿势:通过cp命令覆盖/etc/localtime时间

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

通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。

具体原因在于Java访问系统时区的方式上,可参见文章:

Java TimeZone和 Linux TimeZone问题

该文章很好的说明了Java访问系统时区的方式:

1.如有环境变量 TZ设置,则用TZ中设置的时区

2.在/etc/sysconfig/clock文件中找“ZONE”的值

3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。 

问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。

/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!

如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。

如何在CentOS7中自己搭建时间服务器实现时间同步

前言:集群搭建时,确保每台主机时间同步至关重要,本文将详述如何实现。

一时间服务器的作用

集群内需统一时间以保证执行操作的时序正确。网络时间协议(NTP)实现计算机间时间同步化。

例如:服务器集群进行文件创建、数据库处理等操作的时间。

二时区管理

1.查看当前时区

使用timedatectl命令。

2.查看当前可用时区

使用timedatectl list-timezones命令。

3.设置时区

使用timedatectl set-timezone命令。

三进行时间同步方法

1.简单方法:集群主机与时间服务器同步。使用ntpdate命令。

2.配置远程时间服务器,集群主机同步远程服务器。

3.配置本地时间服务器,集群主机同步本地服务器。

四配置ntp服务

将一台主机配置为ntp服务器,同网段主机通过ntpdate命令同步服务器时间。

1.服务端配置

安装ntp服务和ntpdate工具,配置ntp服务文件,设置开机自启动,启用服务,设置防火墙,同步硬件时间,测试同步。

2.客户端配置

客户端安装ntp服务和ntpdate工具,配置同步服务器,重启服务,与服务器同步时间,设置定时同步。

CentOS7怎么修改服务器系统时间

CentOS7怎么修改服务器系统时间

在CentOS 7里面有一个命令timedatectl可以帮助我们修改服务器的时区。

1.查看服务器里的时间设置 timedatectl,它等同于 timedatectl status:

?

               

   1

2

3

4

5

6

7

8

9

   

$ timedatectl

Local time: Mon 2016-08-29 16:20:35 CST

Universal time: Mon 2016-08-29 08:20:35 UTC

RTC time: Mon 2016-08-29 08:18:07

Time zone: Asia/Shanghai(CST,+0800)

NTP enabled: yes

NTP synchronized: no

RTC in local TZ: no

DST active: n/a

2.了解 timedatectl命令的各个参数:

?

               

   1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

   

$ timedatectl-h

timedatectl [OPTIONS...] COMMAND...

Query or change system time and date settings.

-h--help Show this help message

--version Show package version

--no-pager Do not pipe output into a pager

--no-ask-password Do not prompt for password

-H--host=[USER@]HOST Operate on remote host

-M--machine=CONTAINER Operate on local container

--adjust-system-clock Adjust system clock when changing local RTC mode

Commands:

status Show current time settings

set-time TIME Set system time

set-timezone ZONE Set system time zone

list-timezones Show known time zones

set-local-rtc BOOL Control whether RTC is in local time

set-ntp BOOL Control whether NTP is enabled

3.设置时间

?

               

   1

2

3

4

5

6

7

8

9

   

$ sudo timedatectl set-time 15:26:58$ timedatectl

Local time: Mon 2016-08-29 15:27:00 CST

Universal time: Mon 2016-08-29 07:27:00 UTC

RTC time: Mon 2016-08-29 07:27:00

Time zone: Asia/Shanghai(CST,+0800)

NTP enabled: no

NTP synchronized: no

RTC in local TZ: no

DST active: n/a

PS:下面看下CentOS修改服务器系统时间

linux安装完毕后,一般都是国外的世界,一点都不方便设置任务,或者导致网站获取本地的时间错乱,所以就需要把服务器的时间改为和本地时间一致,也就是换成中国的时间。

第一条指令:date–s'2016-10-31 10:10:10'

第二条指令:clock–w//将日期写入CMOS

时间按照上面的格式,操作完毕可以再用

date

查看服务器时间,如果和设置的一样,就表示成功了

更多知识请关注服务器教程

阅读剩余
THE END