Linux客户端可以通过NTP协议与网络上的NTP时钟服务器同步。在Linux上,使用ntpdate命令来与时钟服务器同步,使用方式很简单,如下:
#/usr/sbin/ntpdate 10.1.63.2
?此外,还要注意的是,在Redhat Linux上ntpdate和date命令修改的是Linux系统时间,而当Linux重启时,会重新加载BIOS上的时钟作为Linux的系统时间,因此,最好把BIOS上的时钟一同更新。如下:
查看BIOS时钟 #/sbin/hwclock -r 将Linux系统时间更新到BIOS #/sbin/hwclock -w
?
如果需要定时与时钟服务器同步时间,可以在crontab里设置周期执行ntpdate命令。如下,在/etc/crontab文件设置:
?
30 5,23 * * * root /usr/sbin/ntpdate 10.1.63.2;/sbin/hwclock -w?以上定义,crond服务会每天两次自动同步系统时钟,分别在5:30和23:30以root身份执行ntpdate同步时钟。
?
注意:
- crond服务运行时,是不带系统环境变量的
- 修改/etc/crontab后,要重启crond服务,如: #/etc/init.d/crond restart
- 查看crond服务运行的日志:#tail?/var/log/cron
使用Linux NTP客户端时钟同步时,要提前注意是否有以下问题:
- 如果Linux运行在虚拟机上,要注意是否虚拟机自身设置了同步时钟机制,这样ntpdate同步还可能会被虚拟机的时钟同步所覆盖。
- Linux上还提供ntpd服务来校准时间,而ntpdate只是简单的同步和更新服务器上时间到本地,ntpdate同步时钟时系统可能会导致系统上时钟跳跃,如果你的应用对修改系统时钟很敏感,有对时间比较的逻辑设计,就要考虑直接简单粗暴是否会导致应用逻辑的混乱。可参考Compare NTPD and ntpdate:http://serverfault.com/questions/16467/compare-ntpd-and-ntpdate