Linux服务器要求时间准确,但是Linux本身没有网络时间同步功能,我们需要借助ntpdate功能来实现时间精准。如果Linux没有安装ntpdate软件,请到http://www.ntp.org/downloads.html下载稳定版,编译安装(./configure && make && make install),安装需要root权限。
安装后,可以将ntpdate命令写到crontab里。
另外,引用网络资料,关于Linux时间的问题:
Linux时间和CMOS时间的同步 写道
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。
#clock -w
这个命令强制把系统时间写入CMOS
#clock -w
这个命令强制把系统时间写入CMOS
所以我们要将命令组合,利用shell命令:命令1 && 命令2的写法,代表如果命令1执行成功,就执行命令2.
那么我们crontab -e 写入如下语句即可:
0 9 * * * ntpdate time.windows.com && clock -w
注意crontab配置文件的语法:分 时 日 月 周 命令
请注意上述命令中网址time.windows.com是可以更换的,但更换前请确认命令ntpdate time.windows.com 是否能执行成功。成功提示如下:
13 Dec 10:28:59 ntpdate[8711]: step time server 65.55.21.13 offset 670.744126 sec
如果再次执行,往往得到如下类似结果:
13 Dec 10:29:11 ntpdate[8808]: adjust time server 65.55.21.13 offset 0.000579 sec
就是时间调整很小。
失败的话,如下:
13 Dec 10:29:50 ntpdate[8809]: no server suitable for synchronization found
报告没有合适的服务器。