今天在查看我的一个服务器的状态的时候,发现了如题所示的问题。
具体场景如下所示:

可以看到,当前系统的时间,和日志显示的时间差了【15】个小时。

关于时间的设置,在Linux中有这么几个注意点:

  1. 系统时间 (System Clock)
  2. 硬件时间(Real Time Clock, RTC)

系统时间可以通过上面的命令【date -R】去获取;

硬件时间可以通过上面的命令【hwclock -r】获取;

如果【系统时间】与【硬件时间】之间有差别,可以通过这种方式去同步:

在上面的命令中:
hc,硬件时间
sys,系统时间

上面的命令也可以写成:


另外,关于系统时间,有个问题是:

  1. 你得到的当前系统时间,是因为修改了环境变量【TZ】而获得的
  2. 还是,在操作系统中修改了具体的设置而获得的?

在我的环境中,上面文首的问题的原因是出现在环境变量的配置,导致的让人对Linux当前的时区配置的误判。

具体如下。

先看看当前的系统的时间信息:

可以看到,上面的配置是有问题的;
TZ的环境变量命名设置的是上海,但是实际上localtime的时间却还是美国洛杉矶。

因此,怪不得文首的日志文件与【date】的时间之间存在了差异。

这种时间差异不只是反应在date与日志文件的时间差异,日志文件的时间和crontab的时间是同步的,因此,与date的时间出现差异后,会让你在配置crontab的策略的时候很困惑:【为什么明明配置了的策略,却不执行?】

上面关于TZ的环境变量去修改系统时间的方式,是程序【tzselect】推荐的;
因此,从现在的结果来看,你应该能理解,这种方式不是修改Linux系统时间的最好的方式。


下面,修改Linux的系统时间(正确的方式)。

方法一:通过【timedatectl】

可以看到,localtime已经被修改了。

方法二:直接将【/usr/share/zoneinfo/】中的目标分区的文件,【复制 / 软链接】做成【/etc/localtime】

也就是说,方法一里面通过命令自动完成的事情,你手动操作。

其实,两种方法的原理与意思都是一样的。


如上,时间修改完成后:
重启操作系统:【reboot】

再看看文首的问题还有没有:

可以看到,文首的问题,已经没有了。


说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒
隐藏
变装