如果不使用时钟同步工具,linux如何解决时钟同步问题?仅需要一行命令即可。

  • Post author:
  • Post category:linux


这是一篇日记,记录了上帝下凡出手,解救苍生与水火之中的神奇文章,如果你也有过类似的经历,留言关注,咱们交流一下~



目录


背景(如果不想知道可以跳过)


一行神奇的命令


一段一段的研究


总结


背景(如果不想知道可以跳过)

由于业务需求,领导让我研究ScheduleX,搞一个叫做业务编排这么一个功能,了解过的可能都知道,ScheduleX是需要花钱的,没有钱研究毛线啊,为了能够节省下那一天的饭钱,于是我找到了一个非常不错的开源框架——PowerJob,当我按照教程一步一步搭建成功之后,我发现!我们的linux服务器的日期,居然是2012年!开什么国际玩笑,不联网的吗?我发现可以联网啊,那是哪根筋出了问题?NTP不能用!为什么?!因为我们单位的垃圾网络需要代理,而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/,//'
)"

就是上面这么一行神奇的命令,这是我在网上找到的一条命令,也没有解释,没有背景,就扔给我这么一条命令,想是上帝可怜我,托了一个无名好人帮我一下。当时我是不信,这么复杂而又简单的命令会好用,结果我直接运行,时间的日期居然对上了!!!!!但是美中不足的是时间不对啊,为了那一天的饭钱,我必须要研究明白这一行命令是什么意思!

一段一段的研究

date -s 这个命令很简单,就是设置日期的,比如date -s “2023-02-23 10:02:02”

那上面那一条命令后面双引号里面的命令,运行完肯定会得到一个日期格式的字符串,那就研究一下吧,于是我就挨个复制运行。

wget -S “https://www.baidu.com/” 2>&1 这个命令就是用来显式服务器端的头信息(2>&1是标准错误拷贝了标准输出的行为,最终结果就是标准输出和错误都被重定向到相同的路径了 ),运行这个命令的时候,出错了!

错误: 无法验证 www.baidu.com 的由 “” 颁发的证书: 无法本地校验颁发者的权限。 要以不安全的方式连接至 www.baidu.com,使用“–no-check-certificate”

按照上面的错误提示,我将这条命令改成了wget -S “https://www.baidu.com/” 2>&1 –no-check-certificate,运行正确,所以我就直接将原命令改了一下,加上了–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/,//'
)"

直接成功,日期直接同步成功,我认为后面的就是正则表达式,将服务器端的头信息里面关于日期的信息提取出来,设置成本机信息。

grep命令,是一个强大的文本搜索工具,能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行(摘自百度百科)-E就是将其变成正则表达式选项,后面这一句就是匹配文本中以“date:”开头或者“Date:”开头的头信息,^[[:space:]]*表示匹配任意多的空格,我查了一下,目前的百度头信息里面是Date:开头。

sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed ‘s’就是取代的意思,比如sed ‘s/hello/nihao/g’就是将文本里面所有的hello换成你好的意思。那sed ‘s/^[[:space:]]*[dD]ate:[[:space:]]*//’就是将除了date这一行的其余内容全部都用‘’空字符代替,sed ‘s/,//’就是将”,”去掉。

head -1,是只要第一行。

总结

文章虽短,但是解决问题的时间是漫长的,在NTP配置代理的问题上,耗了我整整一天半的时间,然后就是死马当活马医,破罐子破摔的各种偏方方法,全都不奏效,这个命令的出现犹如神兵天降,不仅解决了我那一天的饭钱,还让我领略到了linux命令的灵活。



最后欢迎各路大神,新手,老手,文艺,2B,普通程序员关注交流,希望你会成为下一个拯救我于水火之中的上帝使者。



版权声明:本文为z449077880原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。