小菜鸟 2017-01-02
为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在网络中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。
NTP同步方式在linux下一般两种:
(1)使用ntpdate命令和cron组合直接同步时间
(2)使用ntpd服务平滑同步时间
NTP 时间服务器配置《二》通过ntpdate直接同步时间
(1)检查是否安装NTP服务
rpm -qa | grep ntp |
(2)安装NTP软件(如果已安装则忽略)
yum -y install ntp |
(3)同步时间,命令格式如下:# ntpdate [ntp服务器域名或IP]
[root@bogon Desktop]# ntpdate 1.cn.pool.ntp.org 30 Dec 14:46:28 ntpdate[7503]: adjust time server 182.92.12.11 offset 0.062906 sec |
至于ntp服务器可以到http://www.pool.ntp.org NTP的官方网站查找
server 1.cn.pool.ntp.org
server 3.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
如果出现上面的内容说明,证明同步成功了。但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果cpu tick有问题,只是治标不治本。所以,一般配合cron命令来进行定期同步设置。比如,在crontab中添加定时任务:
*/10 * * * * root ntpdate 1.cn.pool.ntp.org;/sbin/hwclock -w |
这样,会每10分钟同步一次时间,并写入硬件时间
(4)添加定时任务
[root@bogon Desktop]# vi /etc/crontab |
说明:
定时任务的基本格式为
* * * * * [user-name] [command to be executed]
第一个*表示分钟,用0~59表示,用*或者*/1表示每分钟;
第二个*表示小时,用0~23表示,0表示0点,也即24点;
第三个*表示日期,用0~31表示;
第四个*表示月份,用1~12表示;
第五个*表示星期,用0~6表示,0表示星期日;
上面的五个参数中,都可以使用*表示每分钟、每小时、每天,每周。
user-name 表示执行该命令的用户
command表示要定时执行的内容。
(5)重启crond服务
service crond restart |
(6)查看任务日志
可以通过tail -f /var/log/cron命令查询日志定时任务执行情况
[root@bogon Desktop]# tail -f /var/log/cron Dec 30 15:02:05 bogon crond[9203]: (CRON) INFO (running with inotify support) Dec 30 15:03:01 bogon CROND[9343]: (root) CMD (ntpdate 1.cn.pool.ntp.org;/sbin/hwclock -w) Dec 30 15:04:01 bogon CROND[9527]: (root) CMD (ntpdate 1.cn.pool.ntp.org;/sbin/hwclock -w) |
注意:使用该方法,需要关闭ntp服务,因为启动服务器,端口会被服务端占用,就不能手动同步时间了。否则会报错:
[root@bogon Desktop]# ntpdate 1.cn.pool.ntp.org
30 Dec 15:13:37 ntpdate[11548]: the NTP socket is in use, exiting