如何改变linux服务器系统时区和时间

如何改变linux服务器系统时区和时间,第1张

方法/步骤1

修改系统时间

linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间。当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步,下面就分享一下时间设置及时钟同步的命令使用方法。

date命令将日期设置为2014年6月18日

---- date -s 06/18/14

将时间设置为14点20分50秒

---- date -s 14:20:50

将时间设置为2014年6月18日14点16分30秒(MMDDhhmmYYYYss)

----date 061814161430

2

hwclock/clock 命令查看、设置硬件时间

查看系统硬件时钟

hwclock --show 或者

clock --show

设置硬件时间

hwclock --set --date="06/18/14 14:55" (月/日/年时:分:秒)或者# clock --set --date="06/18/14 14:55" (月/日/年时:分:秒)

3

同步系统及硬件时钟。

下图中可以看到硬件和系统时钟相差半小时。可以使用hwclock或者clock进行同步,

硬件时钟与系统时钟同步:

# hwclock --hctosys 或者 # clock --hctosys hc代表硬件时间,sys代表系统时间,即用硬件时钟同步系统时钟

系统时钟和硬件时钟同步:

# hwclock --systohc或者# clock --systohc 即用系统时钟同步硬件时钟

执行ntpdate xxxxxxxxxxxx(ntp服务器地址)。

Linux下配置NTP服务器

配置方法:

1、ntp服务安装

NTP服务在RHEL5x中式默认安装的软件包,可用rpm -qa |grep

ntp检查是否安装,如果未安装可使用如下命令安装与删除NTP服务器软件包

#使用rpm方式安装

rpm -ivh ntp-422p1-8el5i386rmp

#使用yum方式安装

yum -y install ntpi

#使用rpm方式删除

rpm -e ntp-422pl-8el5i386rpm

#使用yum方式删除

yum -y remove ntpi

2、ntp服务配置

在ntp服务安装完成后,需要修改ntp服务配置文件。ntp服务主配置文件/etc/ntpconf

21 ntp服务的启动、暂停

NTP属于system

V服务,其启动、暂停相关命令如下:

#启动

service ntpd

start

#停止

Service ntpd

stop

#重新加载

service ntpd

reload

#查看当前启动状态

service ntpd

status

22 ntp服务自动加载

设置ntp服务下一次开机运行状态可通过命令配置

#在运行级别2、3、4、5上设置为自动运行

chkconfig

ntpd on

#在运行级别2、3、4、5上设置为不自动运行

chkconfig

ntpd off

#在运行级别3、5上设置为自动运行

chkconfig

ntpd --level 35 on

#在运行级别3、5上设置为不自动运行

chkconfig

ntpd --level 35 off

23 配置信息

配置ntp,将Internet上的时间服务器作为内部标准时间来源,过程如下

1)修改/etc/ntpconf文件

restrict default kod nomodify notrap nopeer noquery

restrict 127001

restrict -6::1

restrict 19216800 mask 2552552550 nomodify notrap

restrict 19216810 mask 2552552550 nomodify notrap

#指定Internet上的时间服务器

restrict 20746232182 mask 255255255255 nomodify notrap noquery

server 20746232182

server 12712710

fudge 12712710 stratum 10

keys /etc/ntp/keys

#指定NTP服务器日志文件

logfile /var/log/ntp

2)修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对)

20746232182

12712710

3)修改/etc/sysconfig/ntpd文件,内容如下:

#允许BIOS与系统时间同步,也可以通过hwclock -w 命令

SYNC_HWCLOCK=yes

4)在配置完成并重新启动服务后,可通过ntpstat

命令显示本机上一次与上层ntp服务器同步时间的情况,也可以使用ntpq -p 查看本机与上层ntp服务器通信情况,

24 图形界面配置NTP

图形界面下直接用system-config-date, 在“Network Time Protocol”选项页指定NTP服务器后勾选“Synchronize system clock before startingservice”,将ntpd服务设置为自动运行即可。

25 客户端访问

1)Linux客户端可通过图形界面进行配置,也可以通过ntpdate命令立即与NTP服务器及行时间校对。

ntpdate 192168010

2)Windows客户端,只需双击任务栏右下角的时钟,选择“Internet时间”选项页,输入NTP服务IP地址或FQDN,并勾选“自动与Internet时间服务器同步”即可。

Windows默认7天自动更新一次,可通过修改注册表HKEY_LOCAL_MACHINE\SYSTEM

\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 默认单位为妙,修改后重新启动即可生效。

一:NTP是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议

二:NTP服务端配置

21、检查系统是否安装了NTP包(linux系统一般自带NTP42),没有安装我们直接使用yum命令在线安装: yum install ntp

22、NTP服务端配置文件编辑: vim /etc/ntpconf

结果:

# @3新增-权限配置restrict 12712710restrict 192168310 mask 2552552550 nomodify notrap# @3改动-注释掉上级时间服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server  2centospoolntporg iburst#server 3centospoolntporg iburst# @4新增-上级时间服务器server 12712710 # local clockfudge 12712710 stratum 10

23、启动NTP时间服务器:service ntpd start

24、设置NTP开机自动启动:chkconfig ntpd on

25、查看NTP是否正常运行:netstat -tlunp | grep ntp

26、配置防火墙过滤规则:/sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT

如何配置:/etc/sysconfig/iptables 文件内配置开放udp 123端口: -A INPUT -p udp --destination-port 123 -j ACCEPT

A服务端配置文件解释

①:设定NTP主机来源(其中prefer表示优先主机),19216831134是本地的NTP服务器,所以优先指定从该主机同步时间。

server 192168749 prefer

server 0rhelpoolntporg

server 1rhelpoolntporg

server 2rhelpoolntporg

server 3rhelpoolntporg

②:限制你允许的这些服务器的访问类型,在这个例子中的服务器是不容许修改运行时配置或查询您的Linux NTP服务器

restrict 19216800 mask 2552552550 notrust nomodify notrap

在上例中,掩码地址扩展为255,因此从19216801-1921680254的服务器都可以使用我们的NTP服务器来同步时间

#此时表示限制向从19216801-1921680254这些IP段的服务器提供NTP服务。

restrict 19216800 mask 2552552550 notrust nomodify notrap noquery

#设置默认策略为允许任何主机进行时间同步

restrict default ignore

三:NTP客户端配置

31、检查安装NTP服务有没有安装,未安装请自行安装

32、NTP客户端配置文件编辑: vim /etc/ntpconf

# @1新增-权限配置restrict 192168310 mask 2552552550 nomodify notrap# Use public servers from the poolntporg project# Please consider joining the pool (http://wwwpoolntporg/joinhtml)# 注释掉原来的实际服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server 2centospoolntporg iburst#server 3centospoolntporg iburst# @2新增-自己的时间服务器地址server 19216831223 prefer <==以这部主机为最优先#broadcast 1921681255 autokey # broadcast server#broadcastclient # broadcast client#broadcast 224011 autokey # multicast server#multicastclient 224011 # multicast client#manycastserver 239255254254 # manycast server#manycastclient 239255254254 autokey # manycast client

33、手动同步一次时间:/usr/sbin/ntpdate19216831134 (服务端主机IP,这里需要先关闭NTP服务哦)

34、启动NTP服务:service ntpd start

35、观察时间同步状况:ntpq -p

结果:

[root@localhost hct]# ntpq -p remote refid st t when poll reach delay offset jitter==============================================================================19216831134 LOCAL(0) 11 u 64 128 377 0202 73980 412834

⑥查看时间同步结果:ntpstat

[root@hct ~]# ntpstat

unsynchronised

polling server every 8 s

同步失败,同步也需要时间,需等待5-10分钟再次查询:

Every 20s: ntpstat Tue Jul 11 16:55:57 2017synchronised to NTP server (101011247) at stratum 12 time correct to within 605 ms polling server every 128 s

时间同步完成,date一下看是不是和服务器主机时间一致

B客户端配置文件详解

修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对

C系统时间与硬件时间同步

如果主从服务时间超过1000秒则不再进行同步了,这时候要手动同步,即:/usr/sbin/ntpdate命令,如果怕服务器时差会经常变动比较大可以再Linux中添加计划任务,例如:

10 5 root /usr/sbin/ntpdate 19216831223 && /sbin/hwclock -w

ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

拓展内容

ntpq -p各个选项相关信息

restrict 控制相关权限。

语法为: restrict IP地址 mask 子网掩码 参数

其中IP地址也可以是default ,default 就是指所有的IP

参数有以下几个:

ignore  :关闭所有的 NTP 联机服务

nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网

noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器

notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。

nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟

kod : 访问违规时发送 KoD 包。

restrict -6 表示IPV6地址的权限设置。

root@www ~]# vim /etc/ntpconf# 1 先处理权限方面的问题,包括放行上层伺服器以及开放区网用户来源:restrict default kod nomodify notrap nopeer noquery <==拒绝 IPv4 的用户restrict -6 default kod nomodify notrap nopeer noquery <==拒绝 IPv6 的用户restrict 22013015871 <==放行 tockstdtimegovtw 进入本 NTP 伺服器restrict 5912419683 <==放行 tickstdtimegovtw 进入本 NTP 伺服器restrict 5912419684 <==放行 timestdtimegovtw 进入本 NTP 伺服器restrict 127001 <==底下两个是预设值,放行本机来源restrict -6 ::1restrict 1921681000 mask 2552552550 nomodify <==放行区网来源# 2 设定主机来源,请先将原本的 [0|1|2]centospoolntporg 的设定注解掉:server 22013015871 prefer <==以这部主机为最优先server 5912419683server 5912419684# 3预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:driftfile /var/lib/ntp/driftkeys /etc/ntp/keys

ntpd、ntpdate的区别

下面是网上关于ntpd与ntpdate区别的相关资料。如下所示所示:

使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。

时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:

第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。

第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。

第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。

使用“date -s”命令来修改系统时间

比如将系统时间设定成2007年8月1日的命令如下。

[root@localhost root]# date -s 08/01/2005

将系统时间设定成下午5点10分0秒的命令如下。

[root@localhost root]# date -s 17:10:00

这里说的是系统时间,是linux由操作系统维护的。

在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。

如果要确保修改生效可以执行如下命令。

[root@localhost root]# clock -w

或者

[root@localhost root]# hwclock

这个命令强制把系统时间写入CMOS。

Linux时钟的分类

Windows时钟大家可能十分熟悉了,Linux时钟在概念上类似Windows时钟显示当前系统时间,但在时钟分类和设置上却和Windows大相径庭。和Windows不同的是,Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。

既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。

从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,见图1所示,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。

设置Linux的时钟

在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。

1在虚拟终端中使用date命令来查看和设置系统时间

查看系统时钟的操作:

# date

设置系统时钟的操作:

# date 09171327200330

通用的设置格式:

# date 月日时分年秒

2使用hwclock或clock命令查看和设置硬件时钟

查看硬件时钟的操作:

# hwclock --show 或

# clock --show

2003年09月17日 星期三 13时24分11秒 -0482735 seconds

设置硬件时钟的操作:

# hwclock --set --date="09/17/2003 13:26:00"

或者

# clock --set --date="09/17/2003 13:26:00"

通用的设置格式:hwclock/clock --set --date=“月/日/年 时:分:秒”。

3同步系统时钟和硬件时钟

Linux系统(笔者使用的是Red Hat 80,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。

硬件时钟与系统时钟同步:

# hwclock --hctosys

或者

# clock --hctosys

上面命令中,--hctosys表示Hardware Clock to SYStem clock。

系统时钟和硬件时钟同步:

# hwclock --systohc

或者

# clock --systohc

修改linux的时间可以使用date指令

修改日期:

时间设定成2009年5月10日的命令如下:

#date -s 05/10/2009

修改时间:

将系统时间设定成上午10点18分0秒的命令如下。

#date -s 10:18:00

修改时区:

找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。

修改/etc/sysconfig/clock文件的内容为:

ZONE=”Asia/Shanghai”

UTC=false

ARC=false

同步bios时间:

同步BIOS时钟,强制把系统时间写入CMOS,命令如下:

#clock -w

date命令的功能是显示和设置系统日期和时间。

输入date 查看目前系统时间。

修改时间需要 date -功能字符 修改内容

命令中各选项的含义分别为:

-d datestr, --date datestr 显示由datestr描述的日期

-s datestr, --set datestr 设置datestr 描述的日期

-u, --universal 显示或设置通用时间

时间域

%H 小时(0023)

%I 小时(0112)

%k 小时(023)

%l 小时(112)

%M 分(0059)

%p 显示出AM或PM

%r 时间(hh:mm:ss AM或PM),12小时

%s 从1970年1月1日00:00:00到目前经历的秒数

%S 秒(0059)

%T 时间(24小时制)(hh:mm:ss)

%X 显示时间的格式(%H:%M:%S)

%Z 时区 日期域

%a 星期几的简称( SunSat)

%A 星期几的全称( SundaySaturday)

%b 月的简称(JanDec)

%B 月的全称(JanuaryDecember)

%c 日期和时间( Mon Nov 8 14:12:46 CST 1999)

%d 一个月的第几天(0131)

%D 日期(mm/dd/yy)

%h 和%b选项相同

%j 一年的第几天(001366)

%m 月(0112)

%w 一个星期的第几天(0代表星期天)

%W 一年的第几个星期(0053,星期一为第一天)

%x 显示日期的格式(mm/dd/yy)

%y 年的最后两个数字( 1999则是99)

%Y 年(例如:1970,1996等)

需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。

例1:用指定的格式显示时间。

$ date '+This date now is =>%x ,time is now =>%X ,thank you !'

This date now is =>11/12/99 ,time is now =>17:53:01,thank you !

例2:用预定的格式显示当前的时间。

# date

Fri Nov 26 15:20:18 CST 1999

例3:设置时间为下午14点36分。

# date -s 14:36:00

Fri Nov 26 14:15:00 CST 1999

例4:设置时间为1999年11月28号。

# date -s 991128

Sun Nov 28 00:00:00 CST 1999

实例:设置时间伟2008年8月8号12:00

# date -s "2008-08-08 12:00:00"

修改完后,记得输入:clock -w

把系统时间写入CMOS

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何改变linux服务器系统时区和时间

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情