这将会是一篇让你对时间同步受益匪浅的文章!如果你看完之后有收获,希望你能加个关注,如果你看完之后没有收获,希望你能留下你路过的痕迹。
由于工作需要,我们使用了一款神奇的调度框架,叫powerjob,但是powerjob并不是本次吐槽的主角,这次吐槽的主角是我们神奇的网络环境。
想象一个场景,调度人员让工人在上午十点去干某一件事情,结果工人的手表坏了,工人手表的时间到十点的时候,实际时间却已经是下午1点了,这就是时间不同步问题。
现在我要将“调度人员”布置到服务器上,自然就需要让服务器和我这个工人电脑的时间同步,我这工人没啥问题,可以用我的代理账号上网,但是服务器不行啊,服务器是公共资源,他上网费劲啊(我们公司他不允许啊)。这时候也只能牺牲小我了,先大公无私的使用我自己的账号登录一下,用来上网,上网问题解决。
接下来按照网上的各种同步时间的教程,安装一个ntp,然后问题就来了,只要一同步时间就报错:
no server suitable for synchronization found
上网搜了各种方法,完全不顶用啊,我甚至将我自己的电脑配置成了ntp服务器,让这个傻悲服务器来我这同步时间,反正就是一句话,我能力有限,找不到方法同步时间,就在我要砸服务器跑路的时候,看到了下面这么一条指令
sudo date -s "$(wget -S "https://www.baidu.com/" 2>&1|
grep -E '^[[:space:]]*[dD]ate:' |
sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' |
head -1l |
sed 's/,//'
)"
我也不知道这么一串乱七八糟的指令是什么,反正我现在心乱如麻,看这指令眼花缭乱,只能七手八脚的将其复制粘贴了,结果出乎意料啊,日期居然同步上了,但是时间不对,时间是00:00:00,这就让人头大了啊,你这犹抱琵琶半遮面,要给不给我全部的引诱手段,让我实在是欲罢不能啊,我这个人吧,又菜又爱研究,就跟狂飙里面的安欣一样,轴!我就开始研究这条指令到底啥意思。
sudo date -s “”这太简单了,之前我都不知道,这就是设置日期啊,那后面双引号里面的指令最终肯定是形成了一个正确的日期,那为啥没有时分秒呢?凭借我恐怖但又不那么准的第六感,就把后面的指令拆开一条一条尝试,结果第一条就出问题了,我输入wget -S "https://www.baidu.com/" 2>&1,输出下面的提示
错误: 无法验证 www.baidu.com 的由 “” 颁发的证书: 无法本地校验颁发者的权限。 要以不安全的方式连接至 www.baidu.com,使用“--no-check-certificate”
然后我就按照他的提示,输入了wget -S "https://www.baidu.com/" 2>&1 --no-check-certificate
成功了,马不停蹄,直接将这一部分放回之前那一长串指令中去,时间成功同步!
sudo date -s "$(wget -S "https://www.baidu.com/" 2>&1 --no-check-certificate|
grep -E '^[[:space:]]*[dD]ate:' |
sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' |
head -1l |
sed 's/,//'
)"
既然目标已经达成,这一串指令到底啥意思,我得搞一下啊,最后我发现,这一串指令初看是乱花渐欲迷人眼,细看了也就那么回事,就是用正则表达式将百度首页里面的时间提取出来设置到系统中去,大概就这么一个意思,再去细扣里面的细节,我就不在这露怯了,都是一些个初级linux指令。
学习了,佩服!佩服!这哪是人能想出来的招啊,简直惊为天人!
你说这叫人事嘛?上网还得走代理!