一.NTP常见错误及解决办法

最近按照网上查找的资料进行ntp Server的配置后,使用ntp Client进行时间同步,报错信息“no server suitable for synchronization found” 。网上对于该问题的解释的主流原因有

1.ntp server重启后3-5分钟再试

2.ntp server配置文件中可能使用了notrust,需将其注释

3.防火墙udp 123端口没有打开

4.,网络原因,比如路由器,防火墙,公司的上网策略禁止了ntp服务

对于以上原因1,2,3的详细解释,请参考链接 http://www.blogjava.net/spray/archive/2008/07/10/213964.html

而我遇到的问题是使用4方案解决,经过排查,是公司购买的***公司的的上网策略管理对ntp进行了限制。使用watch ntpq -p,查看ntp的状态,如果所有时钟服务器都显示ntpd server always in'INIT'mode   ,那么很有可能是网络限制的原因。

二.NTP配置步骤(菜鸟级)

一、软件安装(服务器端和客户端均一样操作)

1、拷贝ntp服务安装包到虚拟机,安装包共两个:

ntpdate-4.2.6p5-5.el6.centos.x86_64.rpm

ntp-4.2.6p5-5.el6.centos.x86_64.rpm

2、进入安装包所在目录,依次安装

rpm -i ntpdate-4.2.6p5-5.el6.centos.x86_64.rpm

rpm -i ntp-4.2.6p5-5.el6.centos.x86_64.rpm

注:如虚拟机和互联网互通,也可以通过如下命令行在线安装,不要如上两个步骤:

yum install ntp

二、服务器设置

1、服务器防火墙设置:

开放123端口,允许客户端连接

vi /etc/sysconfig/iptables

添加:

-A INPUT -p udp -m udp --sport 123 -j ACCEPT

保存后,重启iptables服务

service iptables restart:

2、配置服务器参数

vi/etc/ntp.conf

增加可行的时间服务器列表:

server 0.cn.pool.ntp.org

server 1.ntp.api.bz

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 8

配置日志文件

logfile /var/log/ntp.log

3、设置服务器端开机启动:

方法一:

在/etc/rc.local中添加如下ntp服务器的启动命令行

/etc/init.d/ntpd start

方法 二:

运行chkconfig设置服务器开机自启动

chkconfig--level 3 ntpd  on

设置成功后,可以通过如下命令查看服务启动的设置情况

chkconfig--list ntpd

三、客户端配置:

1、配置定时同步。

通过crond文件加入ntpdate命令,让客户端周期性向服务器同步时间。

编辑vi /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For detailssee man 4 crontabs

# Example ofjob definition:

#.---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  | .---------- day of month (1 - 31)

# |  | |  .------- month (1 - 12) ORjan,feb,mar,apr ...

# |  | |  |  .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat

# |  | |  |  |

# *  * *  *  * user-name command to be executed

0 1 * * * root ntpdate 192.168.104.91;/sbin/hwclock -w

说明:每天凌晨1点从ntp服务器192.168.4.183同步时间。

也可以用sed命令如下增加:

sed-i '$a0 1 * * * root ntpdate 192.168.104.91;/sbin/hwclock -w' /etc/crontab

重启定时命令:

/etc/init.d/crond restart

关于ntp,ntp Server,ntp Client 的详细配置,请参考链接http://blog.csdn.net/iloli/article/details/6431757   以及 http://my.oschina.net/myaniu/blog/182959

以下内容是对上述链接的文章的原文,请参考

一.转载自http://www.blogjava.net/spray/archive/2008/07/10/213964.html   

错误1.Server dropped: Strata too high

在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。

在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

这是因为NTP server还没有和其自身或者它的server同步上。

以下的定义是让NTP Server和其自身保持同步,如果在/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 127.127.1.0
fudge 127.127.1.0 stratum 8 

在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

那么如何知道何时ntp server完成了和自身同步的过程呢?

在ntp server上使用命令:

# watch ntpq -p

出现画面:

Every 2.0s: ntpq -p                                                                                                             Thu Jul 10 02:28:32 2008

remote           refid      st t when poll reach   delay   offset jitter

==============================================================================

192.168.30.22   LOCAL(0)         8 u   22   64    1    2.113 179133.   0.001

LOCAL(0)        LOCAL(0)        10 l   21   64    1    0.000   0.000  0.001

注意LOCAL的这个就是与自身同步的ntp server。

注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。

如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。

错误2.Server dropped: no data

从客户端执行netdate –d时有错误信息如下:

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

transmit(192.168.30.22)

192.168.30.22: Server dropped: no data

server 192.168.30.22, port 123

.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found

出现这个问题的原因可能有2:

1。检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。

使用以下命令检查ntp的版本:

# ntpq -c version

下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.

In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".

In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd

解决:

把notrust去掉。

2。检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。

可以用命令

#service iptables stop

来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。

2.转载自http://blog.csdn.net/iloli/article/details/6431757

Network Time Protocol (NTP) 也是RHCE新增的考试要求. 学习的时候也顺便复习了一下如何设置Linux的时间,现在拿出来和大家分享

设置NTP服务器不难但是NTP本身是一个很复杂的协议. 这里只是简要地介绍一下实践方法
和上次一样,下面的实验都在RHEL5上运行

1. 时间和时区

如果有人问你说现在几点? 你看了看表回答他说晚上8点了. 这样回答看上去没有什么问题,但是如果问你的这个人在欧洲的话那么你的回答就会让他很疑惑,因为他那里还太阳当空呢.

这里就有产生了一个如何定义时间的问题. 因为在地球环绕太阳旋转的24个小时中,世界各地日出日落的时间是不一样的.所以我们才有划分时区(timezone) 的必要,也就是把全球划分成24个不同的时区. 所以我们可以把时间的定义理解为一个时间的值加上所在地的时区(注意这个所在地可以精确到城市)

地理课上我们都学过格林威治时间(GMT), 它也就是0时区时间. 但是我们在计算机中经常看到的是UTC. 它是Coordinated Universal Time的简写. 虽然可以认为UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC

那么假如现在中国当地的时间是晚上8点的话,我们可以有下面两种表示方式
20:00 CST
12:00 UTC

这里的CST是Chinese Standard Time,也就是我们通常所说的北京时间了. 因为中国处在UTC+8时区,依次类推那么也就是12:00 UTC了.

为什么要说这些呢(呵呵这里不是地理论坛吧...)

第一,不管通过任何渠道我们想要同步系统的时间,通常提供方只会给出UTC+0的时间值而不会提供时区(因为它不知道你在哪里).所以当我们设置系统时间的时候,设置好时区是首先要做的工作
第二,很多国家都有夏令时(我记得小时候中国也实行过一次),那就是在一年当中的某一天时钟拨快一小时(比如从UTC+8一下变成UTC+9了),那么同理到时候还要再拨慢回来.如果我们设置了正确的时区,当需要改变时间的时候系统就会自动替我们调整

现在我们就来看一下如何在Linux下设置时区,也就是time zone

2. 如何设置Linux Time Zone

在Linux下glibc提供了我们事先编译好的许多timezone文件, 他们就放在/usr/share/zoneinfo这个目录下,这里基本涵盖了大部分的国家和城市
代码:
# ls -F /usr/share/zoneinfo/
Africa/      Chile/   Factory    Iceland      Mexico/   posix/      Universal
America/     CST6CDT  GB         Indian/      Mideast/  posixrules  US/
Antarctica/  Cuba     GB-Eire    Iran         MST       PRC         UTC
Arctic/      EET      GMT        iso3166.tab  MST7MDT   PST8PDT     WET
Asia/        Egypt    GMT0       Israel       Navajo    right/      W-SU
Atlantic/    Eire     GMT-0      Jamaica      NZ        ROC         zone.tab
Australia/   EST      GMT+0      Japan        NZ-CHAT   ROK         Zulu
Brazil/      EST5EDT  Greenwich  Kwajalein    Pacific/  Singapore
Canada/      Etc/     Hongkong   Libya        Poland    Turkey
CET          Europe/  HST        MET          Portugal  UCT在这里面我们就可以找到自己所在城市的time zone文件. 那么如果我们想查看对于每个time zone当前的时间我们可以用zdump命令
代码:
# zdump Hongkong
Hongkong  Fri Jul  6 06:13:57 2007 HKT那么我们又怎么来告诉系统我们所在time zone是哪个呢? 方法有很多,这里举出两种

第一个就是修改/etc/localtime这个文件,这个文件定义了我么所在的local time zone.
我们可以在/usr/share/zoneinfo下找到我们的time zone文件然后拷贝去到/etc/localtimezone(或者做个symbolic link)

假设我们现在的time zone是BST(也就是英国的夏令时间,UTC+1)
代码:
# date
Thu Jul  5 23:33:40 BST 2007我们想把time zone换成上海所在的时区就可以这么做
代码:
# ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime
# date
Fri Jul  6 06:35:52 CST 2007
这样时区就改过来了(注意时间也做了相应的调整)

第二种方法也就设置TZ环境变量的值. 许多程序和命令都会用到这个变量的值. TZ的值可以有多种格式,最简单的设置方法就是使用tzselect命令
代码:
# tzselect
...
TZ='America/Los_Angeles';export TZtzselect
会让你选择所在的国家和城市(我省略了这些步骤),最后输出相应的TZ变量的值.那么如果你设置了TZ的值之后时区就又会发生变化

代码:
# date
Thu Jul  5 15:48:11 PDT 2007
通过这两个例子我们也可以发现TZ变量的值会override /etc/localtime. 也就是说当TZ变量没有定义的时候系统才使用/etc/localtime来确定time zone. 所以你想永久修改time zone的话那么可以把TZ变量的设置写入/etc/profile里

好了现在我们知道怎么设置时区了,下面我们就来看看如何设置Linux的时间吧

3. Real Time Clock(RTC) and System Clock

说道设置时间这里还要明确另外一个概念就是在一台计算机上我们有两个时钟:一个称之为硬件时间时钟(RTC),还有一个称之为系统时钟(System Clock)

硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因
系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值 在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了

那么既然两个时钟独自运行,那么时间久了必然就会产生误差了,下面我们来看一个例子
代码:
# date
Fri Jul  6 00:27:13 BST 2007
# hwclock --show
Fri 06 Jul 2007 12:27:17 AM BST  -0.968931 seconds 
通过hwclock --show 命令我们可以查看机器上的硬件时间(always in local time zone), 我们可以看到它和系统时间还是有一定的误差的, 那么我们就需要把他们同步

如果我们想要把硬件时间设置成系统时间我们可以运行以下命令
代码:
# hwclock --hctosys  
反之,我们也可以把系统时间设置成硬件时间
代码:
# hwclock --systohc  
那么如果想设置硬件时间我们可以开机的时候在BIOS里设定.也可以用hwclock命令
代码:
# hwclock --set --date="mm/dd/yy hh:mm:ss"  
如果想要修改系统时间那么用date命令就最简单了
代码:
# date -s "dd/mm/yyyy hh:mm:ss"

现在我们知道了如何设置系统和硬件的时间. 但问题是如果这两个时间都不准确了怎么办? 那么我们就需要在互联网上找到一个可以提供我们准确时间的服务器然后通过一种协议来同步我们的系统时间,那么这个协议就是NTP了. 注意接下去我们所要说的同步就都是指系统时间和网络服务器之间的同步了

4. 设置NTP Server前的准备

其实这个标题应该改为设置"NTP Relay Server"前的准备更加合适. 因为不论我们的计算机配置多好运行时间久了都会产生误差,所以不足以给互联网上的其他服务器做NTP Server. 真正能够精确地测算时间的还是原子钟. 但由于原子钟十分的昂贵,只有少部分组织拥有, 他们连接到计算机之后就成了一台真正的NTP Server. 而我们所要做的就是连接到这些服务器上同步我们系统的时间,然后把我们自己的服务器做成NTP Relay Server再给互联网或者是局域网内的用户提供同步服务

好了,前面讲了一大堆理论,现在我们来动手实践一下吧. 架设一个NTP Relay Server其实非常简单,我们先把需要的RPM包装上
是否已经安装了NTP包可以用这条命令来确定:

[root@NTPser ~]# rpm -qa | grep ntp
ntp-4.2.2p1-9.el5_4.1
chkfontpath-1.10.1-1.1
出现以上代码则表示已安装NTP包,否则用下面方法安装:
代码:

# rpm -ivh ntp-4.2.2p1-5.el5.rpm 
那么第一步我们就要找到在互联网上给我们提供同步服务的NTP Server

http://www.pool.ntp.org是NTP的官方网站,在这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server
那么比如在英国的话就可以选择下面两个服务器
0.uk.pool.ntp.org
1.uk.pool.ntp.org

它的一般格式都是number.country.pool.ntp.org

第二步要做的就是在打开NTP服务器之前先和这些服务器做一个同步,使得我们机器的时间尽量接近标准时间. 
这里我们可以用ntpdate命令手动更新时间
代码:
# ntpdate 0.uk.pool.ntp.org
 6 Jul 01:21:49 ntpdate[4528]: step time server 213.222.193.35 offset -38908.575181 sec
# ntpdate 0.pool.ntp.org
 6 Jul 01:21:56 ntpdate[4530]: adjust time server 213.222.193.35 offset -0.000065 sec
假如你的时间差的很离谱的话第一次会看到调整的幅度比较大,所以保险起见可以运行两次. 那么为什么在打开NTP服务之前先要手动运行同步呢?
1. 因为根据NTP的设置,如果你的系统时间比正确时间要快的话那么NTP是不会帮你调整的,所以要么你把时间设置回去,要么先做一个手动同步
2. 当你的时间设置和NTP服务器的时间相差很大的时候,NTP会花上较长一段时间进行调整.所以手动同步可以减少这段时间

5. 配置和运行NTP Server

现在我们就来创建NTP的配置文件了, 它就是/etc/ntp.conf. 我们只需要加入上面的NTP Server和一个driftfile就可以了
代码:
# vi /etc/ntp.conf

server 210.72.145.44     #这是中国国家授时中心的IP
server 0.uk.pool.ntp.org
server 1.uk.pool.ntp.org
                                     
fudge 127.127.1.0 stratum 0  stratum  这行是时间服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0

driftfile /var/lib/ntp/ntp.drift  非常的简单. 接下来我们就启动NTP Server,并且设置其在开机后自动运行
代码:
# /etc/init.d/ntpd start
# chkconfig --level 35 ntpd on

6. 查看NTP服务的运行状况

现在我们已经启动了NTP的服务,但是我们的系统时间到底和服务器同步了没有呢? 为此NTP提供了一个很好的查看工具: ntpq (NTP query)

我建议大家在打开NTP服务器后就可以运行ntpq命令来监测服务器的运行.这里我们可以使用watch命令来查看一段时间内服务器各项数值的变化
代码:
# watch ntpq -p
Every 2.0s: ntpq -p                                  Sat Jul  7 00:41:45 2007

remote           refid      st t when poll reach   delay   offset  jitter
===========================================================
+193.60.199.75   193.62.22.98     2 u   52   64  377    8.578   10.203 289.032
*mozart.musicbox 192.5.41.41      2 u   54   64  377   19.301  -60.218 292.411

现在我就来解释一下其中的含义

remote: 它指的就是本地机器所连接的远程NTP服务器
      refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
          st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
            t: 这个.....我也不知道啥意思^_^
    when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
       poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
    reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
    delay: 从本地机发送同步要求到服务器的round trip time
    offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
     jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确

那么大家细心的话就会发现两个问题: 第一我们连接的是0.uk.pool.ntp.org为什么和remote server不一样? 第二那个最前面的+和*都是什么意思呢?

第一个问题不难理解,因为NTP提供给我们的是一个cluster server所以每次连接的得到的服务器都有可能是不一样.同样这也告诉我们了在指定NTP Server的时候应该使用hostname而不是IP

第二个问题和第一个相关,既然有这么多的服务器就是为了在发生问题的时候其他的服务器还可以正常地给我们提供服务.那么如何知道这些服务器的状态呢? 这就是第一个记号会告诉我们的信息

* 它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供
+ 它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管
- 远程服务器被clustering algorithm认为是不合格的NTP Server
x 远程服务器不可用

了解这些之后我们就可以实时监测我们系统的时间同步状况了

7. NTP安全设置

运行一个NTP Server不需要占用很多的系统资源,所以也不用专门配置独立的服务器,就可以给许多client提供时间同步服务, 但是一些基本的安全设置还是很有必要的
那么这里一个很简单的思路就是第一我们只允许局域网内一部分的用户连接到我们的服务器. 第二个就是这些client不能修改我们服务器上的时间

关于权限设定部分 
权限的设定主要以 restrict 这个参数来设定,主要的语法为: 
restrict IP地址 mask 子网掩码 参数 
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP 
参数有以下几个: 
ignore :关闭所有的 NTP 联机服务 
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。 
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网 
noquery :不提供客户端的时间查询 
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!

在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求

首先我们对于默认的client拒绝所有的操作
代码:
restrict default kod nomodify notrap nopeer noquery

然后允许本机地址一切的操作
代码:
restrict 127.0.0.1

最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间
代码:
restrict 192.168.1.0 mask 255.255.255.0 nomodify

把这三条加入到/etc/ntp.conf中就完成了我们的简单配置. NTP还可以用key来做authentication,这里就不详细介绍了

8. NTP client的设置

做到这里我们已经有了一台自己的Relay Server.如果我们想让局域网内的其他client都进行时间同步的话那么我们就都应该照样再搭建一台Relay Server,然后把所有的client都指向这两台服务器(注意不要把所有的client都指向Internet上的服务器). 只要在client的/etc/ntp.conf加上这你自己的服务器就可以了
代码:
server ntp1.leonard.com
server ntp2.leonard.com

LINUX客户端使用
ntpdate 172.30.218.114 
来向NTP服务器同步自己的时间
其它LINUX如果仅作为只客户端的话,则不能启动ntpd服务!否则无法运行ntpdata 服务器地址 来同步时间
之后可以使用cron或修改crontab文件定期向NTP服务器更新时间,并用
# hwclock --systohc  
将系统时间设置为硬件时间

9. 一些补充和拾遗(挺重要)

1. 配置文件中的driftfile是什么?
我们每一个system clock的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整.但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了

2. 如何同步硬件时钟?
NTP一般只会同步system clock. 但是如果我们也要同步RTC(hwclock)的话那么只需要把下面的选项打开就可以了
代码:
# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes

3、利用crontab让LINUX NTP定时更新时间
注:让linux运行ntpdate更新时间时,linux不能开启NTP服务,否则会提示端口被占用:如下
[root@ESXI ~]# ntpdate 1.rhel.pool.ntp.org                                 
20 May 09:34:14 ntpdate[6747]: the NTP socket is in use, exiting

crontab文件配置简要说明
命令格式的前一部分是对时间的设定,后面一部分是要执行的命令。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了数字还有几个个特殊的符号就是“*”、“/”和“-”、“,”,“*”代表所有的取值范围内的数字,“/”代表每的意思,“*/5”表示每5个单位,“-”代表从某个数字到某个数字,“,”分开几个离散的数字。以下举几个例子说明问题:
每天早上6点:
0 6 * * *  command
每两个小时:
0 */2 * * *  command
晚上11点到早上8点之间每两个小时,早上八点:
0 23-7/2,8 * * * command
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点:
0 11 4 * 1-3 command 
1月1日早上4点:
0 4 1 1 * command

3.3、设置开机自动启动服务
运行setup或其它服务设置工具,将crond服务勾选上 
chkconfig --level 2345 crond on  定义在这几个系统运行级别上启用crond (系统安装完默认就是这个设置)
__________________________________________

10.NTP客户端的设置

一、LINUX做为客户端自动同步时间
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:

30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w  #192.168.0.1是NTP服务器的IP地址
然后重启crond服务
service crond restart 
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。

二、WINDOWS 需要打开windows time服务和RPC的二个服务
如果在打开windows time 服务,时报 错误1058,进行下面操作 
1.运行 cmd 进入命令行,然后键入
w32tm /register  进行注册
正确的响应为:W32Time 成功注册。

2.如果上一步正确,用 net start "windows time" 或 net start w32time 启动服务。

11.其它造成无法成功更新的原因:
1、客户端的日期必须要设置正确,不能超出正常时间24小时,不然会因为安全原因被拒绝更新。其次客户端的时区必须要设置好,以确保不会更新成其它时区的时间。
2、fudge 127.127.1.0 stratum 10 如果是LINUX做为NTP服务器,stratum(层级)的值不能太大,如果要向上级NTP更新可以设成2
3、LINUX的NTP服务器必须记得将从上级NTP更新的时间从系统时间写到硬件里去 hwclock --systohc 
     NTP一般只会同步system clock. 但是如果我们也要同步RTC(hwclock)的话那么只需要把下面的选项打开就可以了
      代码:
      # vi /etc/sysconfig/ntpd
      SYNC_HWCLOCK=yes
4、Linux如果开启了NTP服务,则不能手动运行ntpdate更新时间(会报端口被占用),它只能根据/etc/ntp.conf 里server 字段后的服务器地址按一定时间间隔自动向上级NTP服务器更新时间。可以运行命令 ntpstat 查看每次更新间隔如:
[root@ESXI ~]# ntpstat
synchronised to NTP server (210.72.145.44) at stratum 2    #本NTP服务器层次为2,已向210.72.145.44 NTP同步过
   time correct to within 93 ms                                               #时间校正到相差93ms之内
   polling server every 1024 s                                                 #每1024秒会向上级NTP轮询更新一次时间

三.以下内容转载自http://my.oschina.net/myaniu/blog/182959
在Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系统会自动在Bios里面取硬件时间,以保证时间的不间断。

但在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠Bios电池来维持,而系统时间,是用CPU tick来维持的。

在系统开机的时候,会自动从Bios中取得硬件时间,设置为系统时间。

一.Linux系统时间的设置

在Linux中设置系统时间,可以用date命令:

//查看时间

[root@localhost ~]# date
2008年 12月 12日 星期五 14:44:12 CST

//修改时间
[root@localhost ~]# date --set "1/1/09 00:01" <== (月/日/年时:分:秒)
2009年 01月 01日 星期四 00:01:00 CST

//date 有几种时间格式可接受,这样也可以设置时间:

[root@localhost ~]# date 012501012009.30  <== 月日时分年.秒
2009年 01月 25日 星期日 01:01:30 CST

二.Linux硬件时间的设置

硬件时间的设置,可以用hwclock或者clock命令。其中,clock和hwclock用法相近,只用一个就 行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

//查看硬件时间 可以是用 hwclock ,hwclock --show 或者 hwclock -r

[root@localhost ~]# hwclock --show
2008年12月12日 星期五 06时52分07秒  -0.376932 seconds

//设置硬件时间

[root@localhost ~]# hwclock --set --date="1/25/09 00:00" <== 月/日/年时:分:秒
[root@localhost ~]# hwclock
2009年01月25日 星期日 00时00分06秒  -0.870868 seconds

三.系统时间和硬件时间的同步

同步系统时间和硬件时间,可以使用hwclock命令。

//以系统时间为基准,修改硬件时间

[root@localhost ~]# hwclock --systohc <== sys(系统时间)to(写到)hc(Hard Clock)
[root@localhost ~]# hwclock -w

//以硬件时间为基准,修改系统时间

[root@localhost ~]# hwclock --hctosys 
[root@localhost ~]# hwclock -s

四.不同机器之间的时间同步

为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器 来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在网络中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。

同步时间,可以使用ntpdate命令,也可以使用ntpd服务。

使用ntpdate比较简单。格式如下:

[root@linux ~]# ntpdate [-nv] [NTP IP/hostname]
[root@linux ~]# ntpdate 192.168.0.2
[root@linux ~]# ntpdate time.ntp.org

但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果cpu tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:

0 12 * * * * /usr/sbin/ntpdate 192.168.0.1

这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1。

使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比 如sleep,timer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

要注意的是,ntpd 有一个自我保护设置: 如果本机与上源时间相差太大, ntpd 不运行. 所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务 运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.

五.ntpd服务的设置

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

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

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

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

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

5. /etc/timezone:系统时区文件

下面重点说说 /etc/ntp.conf文件的设置。在 NTP Server 的设定上面,其实最好不要对 Internet 无限制的开放,尽量仅提供您自己内部的 Client 端联机进行网络校时就好。此外, NTP Server 总也是需要网络上面较为准确的主机来自行更新自己的时间啊,所以在我们的 NTP Server 上面也要找一部最靠近自己的 Time Server 来进行自我校正。事实上, NTP 这个服务也是 Server/Client 的一种模式。

[root@linux ~]# vi /etc/ntp.conf 
# 1. 关于权限设定部分 
#   权限的设定主要以 restrict 这个参数来设定,主要的语法为: 
#   restrict IP mask netmask_IP parameter 
#   其中 IP 可以是软件地址,也可以是 default ,default 就类似 0.0.0.0 
#   至于 paramter 则有: 
#   ignore :关闭所有的 NTP 联机服务 
#   nomodify:表示 Client 端不能更改 Server 端的时间参数,不过,

#   Client 端仍然可以透过 Server 端来进行网络校时。 
#   notrust :该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域 
#   noquery :不提供 Client 端的时间查询

#   notrap :不提供trap这个远程事件登入

#  如果 paramter 完全没有设定,那就表示该 IP (或网域)“没有任何限制”

restrict default nomodify notrap noquery # 关闭所有的 NTP 要求封包 
restrict 127.0.0.1    #这是允许本级查询
restrict 192.168.0.1 mask 255.255.255.0 nomodify 
#在192.168.0.1/24网段内的服务器就可以通过这台NTP Server进行时间同步了 
# 2. 上层主机的设定 
#  要设定上层主机主要以 server 这个参数来设定,语法为:
#  server [IP|HOST Name] [prefer]
#  Server 后面接的就是我们上层 Time Server 啰!而如果 Server 参数 
#  后面加上 perfer 的话,那表示我们的 NTP 主机主要以该部主机来作为 
#  时间校正的对应。另外,为了解决更新时间封包的传送延迟动作, 
#  所以可以使用 driftfile 来规定我们的主机 
#  在与 Time Server 沟通时所花费的时间,可以记录在 driftfile  
#  后面接的文件内,例如下面的范例中,我们的 NTP server 与  
#  cn.pool.ntp.org联机时所花费的时间会记录在 /etc/ntp/drift文件内 
server 0.pool.ntp.org

server 1.pool.ntp.org

server 2.pool.ntp.org

server cn.pool.ntp.org prefer

#其他设置值,以系统默认值即可

server  127.127.1.0     # local clock

fudge   127.127.1.0 stratum 10

driftfile /var/lib/ntp/drift
broadcastdelay  0.008
keys /etc/ntp/keys

总结一下,restrict用来设置访问权限,server用来设置上层时间服务器,driftfile用来设置保存漂移时间的文件。

六.ntp服务的启动与观察

在启动NTP服务前,先对提供服务的这台主机手动的校正一次时间咯。(因为启动服务器,端口会被服务端占用,就不能手动同步时间了)

[root@linux ~] # ntpdate cn.pool.ntp.org

25 Apr 14:33:51 ntpdate[8310]: step time server 80.85.129.2 offset 6.655976 sec

然后,启动ntpd服务:

[root@linux ~] # service ntpd start

或 [root@linux ~] # /etc/init.d/ntpd start

查看端口:

[root@linux ~] # netstat -ln|grep 123

udp        0      0 192.168.228.153:123        0.0.0.0:*

udp        0      0 127.0.0.1:123               0.0.0.0:*

udp        0      0 0.0.0.0:123                  0.0.0.0:*

udp        0      0 :::123                       :::*

如何确认我们的NTP服务器已经更新了自己的时间呢?

[root@linux ~] # ntpstat

synchronized to NTP server(127.127.1.0) at stratum 11

time correct to within 950ms

polling server every 64 s

#改指令可列出NTP服务器是否与上层联机。由上述输出结果可知,时间校正约

#为950*10(-6)秒。且每隔64秒会主动更新时间。

常见的错误:

25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found

其实,这不是一个错误。而是由于每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了。

[root@linux ~] # ntptrace –n 127.0.0.1

127.0.0.1:stratum 11, offset 0.000000,synch distance 0.950951

222.73.214.125:stratum 2,offset –0.000787,synch distance 0.108575

209.81.9.7:stratum 1,offset 0.000028,synch distance 0.00436,refid ‘GPS’

#这个指令可以列出目前NTP服务器(第一层)与上层NTP服务器(第二层)彼此之间的

#关系

[root@linux ~] # ntpq –p

指令“ntpq -p”可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字段的意义如下:

remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在作用钟的上层NTP,如果是“*”则表示也有连上线,不过是作为次要联机的NTP主机。

refid:参考的上一层NTP主机的地址

st:即stratum阶层

when:几秒前曾做过时间同步更新的操作

poll:下次更新在几秒之后

reach:已经向上层NTP服务器要求更新的次数

delay:网络传输过程钟延迟的时间

offset:时间补偿的结果

jitter:Linux系统时间与BIOS硬件时间的差异时间

最后提及一点,ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd 文件。

在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

linux配置时间服务器(ntp)
2007-10-27 16:34

在linux下,我们可以通过自带的NTP(Network Time Protocol)协议通过网络使自己的系统保持精确的时间。可用的公共时间服务器列表可以从下面的地址获取:

  http://ntp.isc.org/bin/view/Servers/NTPPoolServers

  NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。

  介绍一下环境:179为本地时间服务器,其他服务器和179同步。179和网上时间服务器同步。

  一、配置179时间服务器

  1、首先查询NTP软件版本

  rpm -qa|grep ntp

  ntp-4.1.2-4.EL3.1

  如果没有可以从linux安装盘上查找,安装此ntp包

  2、编辑配置文件

  vi /etc/ntp.conf

  首先定义服务器

  server pool.ntp.org

  restrict default nomodify notrap noquery

  restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap #从192.168.0.1-192.168.0.254的服务器都可以使用我们的NTP服务器来同步时间。

  注释掉以下一行

  #restrict default ignore

  3、启动NTP服务器

  #chkconfig ntpd on

  #/etc/init.d/ntpd start

  #/etc/init.d/ntpd stop

  #/etc/init.d/ntpd restart

  默认情况下,我们配置的NTP服务器不会去时间源那里同步时间,所以必须修改/etc/ntp/step-tickers文件,加入我们的时间源,这样每次通过/etc/init.d/ntpd 来启动服务的时候就会自动更新时间了

  检查服务器同步状态:

  ntpq -p

  ntptrace 192.168.0.179

  如果输出正确,则说明时间服务器成功。每次启动服务器,会自动同步时间。

  配置LINUX客户端

  在linux客户端上执行ntpdate ntp_server_ip 就可以根据时间服务器统一局域网的时间了,将上面的命令放到cron里每天早上3点定期执行,crontab –e 然后输入

  0 3 * * * /usr/sbin/ntpdate 192.168.0.179

为什么电脑要对时?因为电脑自己的钟不准。破电脑一天慢五分钟也不奇怪。

对时需要对到什么精度?一般家用的电脑时钟误差一分钟完全可以接受。集群服务器配合工作一般需要所有的时钟同步在一秒之内。

和谁同步?一般是和世界各地的 NTP (Network Time Protocol)服务器同步的。米国标准时间由 NIST 发布,NIST 提供了一些服务器。现代 Windows 操作系统自动和 time.windows.com 对时。Linux 下面一般用 NTPPool 来自动选择服务器。中国国家授时中心 NTP 210.72.145.44 是中国权威时间。中国教育网有自己的 NTP 服务器网。如果是集群服务器,一般会在内网配置几个本地 NTP 服务器。

上面这么多 NTP 服务器有没有优劣呢?有的,但是对于一般的应用来说,看不出什么区别。 理论上说,NTP 服务器是分等级(Stratum)的,Stratum = 1 的 NTP 服务器是直接和世界标准时钟同步的,包括 GPS 时间、铯原子钟、某些手机网络等。NIST、中国国家授时中心和中国教育网的第一级时间服务器都是这个级别的。Stratum = 2 的 NTP 服务器是和 Stratum = 1 的服务器同步的,性能稍差,但精确度也在毫秒的量级,所以用起来没什么区别。再往下每同步一级,Stratum 就加一。

Windows 2000 开始包含了自动时间同步的服务。Windows XP 上,打开时间设置就有网络对时的设置。默认是每星期和 time.windows.com 对时一次。这个一星期同步一次太长了,可以通过注册表调整,或者用 Wits 修改。

Linux 下面的 ntpd 就要灵活多啦。默认配置一般足够好用。下面在 Fedora 下举个例子。配置:

# grep "^server" /etc/ntp.conf
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server pool.ntp.org
server   127.127.1.0 # local clock

启动 ntpd 之后查看状态

# ntpq -pnremote            refid       st t when poll reach    delay    offset   jitter
==============================================================================64.25.87.54      128.118.25.5      2 u    10    64    17    79.194   -542.89    1.94264.72.116.51     129.7.1.66        2 u     9    64    17    51.569   -532.23    1.80364.72.116.50     129.7.1.66        2 u    11    64    17    51.417   -516.70    1.41764.72.116.45     129.7.1.66        2 u     7    64    17    51.586   -532.36    1.135
*127.127.1.0      LOCAL(0)         10 l     3    64    17     0.000     0.000    0.001

st 这列显示自动选的四个 NTP 服务器都是 Stratum = 2。最后一个是本地时钟。前四行的 offset 显示本地时钟和四个 NTP 服务器都有大概 500 毫秒的差距。ntpstat 显示目前只和本地时钟同步:

# ntpstat
synchronised to local net at stratum 11time correct to within 949 mspolling server every 64 s

过一会再看:

# ntpq -pnremote            refid       st t when poll reach    delay    offset   jitter
==============================================================================
+64.25.87.54      128.118.25.5      2 u    56    64   377    78.548   250.871   37.180
+64.72.116.51     129.7.1.66        2 u    58    64   377    51.551   268.538   36.817
*64.72.116.50     129.7.1.66        2 u    58    64   377    51.539   274.497   36.629
+64.72.116.45     129.7.1.66        2 u    49    64   377    51.485   271.750   37.841127.127.1.0      LOCAL(0)         10 l    44    64   377     0.000     0.000    0.001
# ntpstat
synchronised to NTP server (64.72.116.50) at stratum 3time correct to within 263 mspolling server every 64 s

本地时钟已经成功和外面的 NTP 服务器同步。ntpq 报告中第一列 * 表示目前选择的主同步服务器,标 + 的表示有可能被用来进一步提高同步精度的次要服务器。因为是和 Stratum = 2 的服务器同步,所以本地的 ntpd Stratum 就是 3 了。一个细节是 ntpq 对时钟是慢慢调整的,而不是直接跳好多秒,这样平滑的调整时间可以保证很多程序的流程平稳。不过,如果时钟误差过大,ntpd 可能会拒绝调整时间;或者有人也可能希望立刻调正时间,这样的话可以直接执行命令:ntpdate -b pool.ntp.org(需要停掉 ntpd 服务执行)。

在我另一个服务器上,配置了好多 NTP 服务器:

# grep "^server" /etc/ntp.conf
server time-a.nist.gov
server time-b.nist.gov
server time.nist.gov
server time.windows.com
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server pool.ntp.org
server   127.127.1.0 # local clock
# ntpq -premote            refid       st t when poll reach    delay    offset   jitter
==============================================================================
+time-a.nist.gov .ACTS.            1 u    61   128   377    76.113    -1.046    3.424
*time-b.nist.gov .ACTS.            1 u    65   128   377    81.063     0.398    1.892
-time.nist.gov    .ACTS.            1 u   251   128   356    38.911     1.353   30.226
-time.windows.co 18.26.4.105       2 u    45   128   267    31.218    13.180    6.039
-194.109.64.200   192.87.106.2      2 u   122   128   377   155.132     0.596   38.674
-a.mirror.fizzel 43.75.42.44       3 u    56   128   377   163.391   -11.756   13.006
-enfield.ikk.szt 195.111.99.186    2 u   118   128   377   188.326    -2.520   32.359
+ntp1.esat.net    .GPS.             1 u    59   128   377   161.103    -1.321    0.460LOCAL(0)         .LOCL.           10 l    48    64   377     0.000     0.000    0.001

标注 - 的是那些相对来说不太准的钟(offset 或 jitter 偏大),自动被剔除了。从 delay 这里可以看到,我这里和 NIST 几个钟网络延迟比较小(100 毫秒之内),一般这样的钟误差小一些。倒数第二个 pool.ntp.org 选择的是一个和 GPS 同步的钟,Stratum = 1,是一个比较准的钟了,只是网络延迟稍大。同时可以看到 time.windows.com 的 Stratum = 2,在一年以前,它曾经是 6。堂堂国际大公司微软也不花几百块钱买个 GPS 接收器建一个 Stratrum = 1 的时钟服务器造福千千万万的 windows 用户,真是不可理解。

最后,linux 下防火墙规则如果极严格的话可能会影响 ntpd 对时,打开 sport 123 即可(假设 OUTPUT 链全 ACCEPT):

iptables -I INPUT -p udp -m udp --sport 123 -j ACCEPT

NTP的配置总结(整理+转载)相关推荐

  1. linux服务器ntp客户端配置【转】

    转自:https://www.cnblogs.com/kerrycode/archive/2015/08/20/4744804.html 在Linux系统中,为了避免主机时间因为在长时间运行下所导致的 ...

  2. linux设置ntp后不生效,Linux时间设置与NTP服务配置

    第一部分:时间设置 一.时间和时区 格林威治时间(GMT),是0时区时间.计算机中是UTC.它是Coordinated Universal Time的简写.虽然UTC和GMT的值相等(误差相当之小), ...

  3. linux ntp时间同步配置,Linux ntp 时间同步服务配置

    一.基础环境 1.操作系统:CentOS 7.3 2.ntp:4.2.6 3.机器,服务端(192.168.1.210)客户端(192.168.1.211) 二.安装ntp yum -y instal ...

  4. python对文件重命名快捷键_Pycharm快捷键配置详细整理

    1.主题 毫无疑问Pycharm是一个具有强大快捷键系统的IDE,这就意味着你在Pycharm中的任何操作,例如打开一个文件.切换编辑区域等,都可以通过快捷键来实现.使用快捷键不仅能提高操作速度,看起 ...

  5. ntp 服务端配置(/etc/ntp.conf配置详解) -小白实操记录

    1 ntp 安装查看 1.1 安装命令 apt-get install ntp 1.2 查看服务是否启动 service --status-all 或者 ps -aux | grep ntp 1.3 ...

  6. windows ntp客户端配置,连接linux npt服务。

    服务器操作系统使用的centos系统.服务器之间通过NTP服务进行时间同步,客户端使用的window,需要同步服务端的时间. 配置windows ntp客户端步骤如下: 运行gpedit.msc 点击 ...

  7. 华为基本配置命令(整理)

    华为基本配置命令(整理) 版权仅供原作者所有,感谢提供资料的原作者! 一.单交换机VLAN划分 命令解释 system-view 进入系统视图 quit 退到系统视图 undo vlan 20 删除v ...

  8. ntp server 配置参数_02-NTP配置

    1.1  NTP简介 在大型的网络中,如果依靠管理员手工配置来修改网络中各台设备的系统时间,不但工作量巨大,而且也不能保证时间的精确性.NTP(Network Time Protocol,网络时间协议 ...

  9. ntp 配置详解(转载后整理汇总)

    ntp 配置详解 一.时间和时区 在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数. 世界遵循一个标准UTC,中国的标准是CST(北京时间)中国处于 ...

最新文章

  1. ios UIImage 圆形图片剪切方案
  2. 程序员小抄 (转载自酷壳,一个专注技术的博客)
  3. statspack报告
  4. 【Android】两种动画介绍(Tween动画、Frame动画)
  5. 开发一款即时通讯App,从这几步开始
  6. 来讲讲什么是元数据和主数据
  7. 黑苹果EFI文件,华硕 B360plus+Corei5-9400F+RX590+ macos10.15.1 99%完美EFI,硬解,ALC887仿生声卡
  8. 2021年6月程序员薪资出炉,平均薪资15302元
  9. 保险行业数据分析——用户画像 精准营销
  10. ORACLE 的 ADD_MONTHS函数常用来计算 上年同期
  11. 计算机调节音量找不到,电脑右下角的小喇叭不见了?教你这样操作,轻松调节音量!...
  12. Unix/Linux编程:Internet domain socket
  13. Maven详细入门及教学视频推荐
  14. 太完美 TWM000极度精简版XP20130123终结美化版
  15. 《职场正能量》读后感
  16. 2022稳定学习年度研究进展系列报告丨精华观点总结
  17. ACL 2022 | DialogVED:用于对话回复生成的预训练隐变量编码-解码模型
  18. java实现关键字查询_SpringData关键字查询实现方法详解
  19. 《开源软件开发导论》作业1
  20. Cmder | 一款命令行增强工具

热门文章

  1. 移动端css样式兼容
  2. array,array.array,np.array的区别
  3. Android手机铃声代码实现
  4. 固态硬盘开机卡顿怎么办?详细解决方法在这!
  5. 单例模式——饿汉模式懒汉模式
  6. submit禁止提交的几种方式
  7. ISO 27001解读(三)ISMS实施
  8. UFT-Mobile
  9. 纯java分布式内存数据库_高性能分布式内存数据库VoltDB介绍
  10. Pandas-数据结构-Series(二):Series的索引【下标索引、标签索引、切片索引、布尔型索引】