有时发现Linux还真是有点囧,前两天发现重启之后,系统时间会莫名其妙的会退后跳跃。偶尔会从2008年跳到2012年,没有任何征兆。
网上搜了一下,Linux系统下有两个时间概念,系统时间和硬件时间。硬件时间是主板上的电池和晶振维护的时间,而系统时间则是Linux系统所用的时间,它在每次系统启动是由硬件时间和时区等参数得到。硬件时间和系统时间之间的同步和校准有一套比较“复杂”的机制。系统认为自己的系统时间是准确的,而硬件时钟会有偏差,于是就将偏差写到/etc/adjtime文件中。系统启动的时候,会读取根据偏差,调整硬件时钟。
问题就出在这个/etc/adjtime文件。打开一看。误差时间相当多,也就是说,我现在把系统时间和硬件时间都设置成标准时间,下次启动时会自动将时间更改掉。改的幅度就由这个adjtime中内容决定。
解决办法:1)rm -r /etc/adjtime date 改系统时间和hwclock -w改硬件时间,重启。OK
2)将启动脚本/etc/init.d/boot.clock中加载时间偏移的部分注释掉。重新修改系统时间到正常时间。OK
两个问题:方法1)不排除下次还复现的可能。
方法2)不能保证时间的精确。
不知道还有没有更好的办法。
阅读(258) | 评论(0) | 转发(0) |