闲余:夏日将到,园区计划五一期间进行大面积的电网停电检修,运维同学因此将公司测试服务器提前关闭了。收假后,测试告诉我,他发现一个bug--一段定时任务程序未执行,我的第一反应就是--会不会是假期测试服务器停机导致的时间有误,因此定时任务未执行。于是我立马登录测试服务器,打开终端,输入ip,告诉我"Connect time out",我们的运维同学吖,咱能不能靠谱点??告知运维后大概五分钟,终于成功连上了。
输入'date'命令后,立马证实了我的猜想,fuck!服务器时间居然还是 '2019年 04月 30日 星期二 20:42:45 CST'--也就是关闭服务器的当日时间。
当时我想到了两种解决方案 -- A.直接使用 "date -s 'YYYY-MM-DD hh:mm:ss'",然后刷入BIOS --"hwclock -w" B.直接同步网络时间--使用"ntpdate"
方案A简单粗暴,我们开发毕竟不能随便的服务器硬件配置做太多修改,如不小心造成什么问题,咱也不好说(当然不刷入bios也是可以的,可能会导致重启失效)。于是我选择了比较安全保险的B方案--同步网络时间。
在同步网络时间之前,我们需要确保服务有安装 ntpdate 服务
ps aux |grep ntpdate
如果未安装,使用如下代码安装,系统会自动选择合适的镜像,按提示选择 y 就行。
yum install ntpdate
当然安装完成后,还可以执行第一条命令查看是否成功。确认安装成功后,输入如下代码
ntpdate -u cn.pool.ntp.org //-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;
注意:若不加上-u参数, 可能会出现以下提示:no server suitable for synchronization found
执行完毕后,可 使用 ‘date’命令查看服务器时间是否同步成功。
补充:
如果有同学对ntpdate感兴趣,可以参考一下 时间服务器: NTP 服务器 ,这里面服务器时间的解释详细易懂。
另外补充一些国内比较快速稳定的NTP服务,参考 https://www.zhihu.com/question/30252609。