adjtimex使用

今天遇到一个ntp的同步问题。服务器上配置好了ntpd,在启动前也手动进行过同步,但是过段时间ntpq查询发现服务器即便能选出同步服务器,但是系统的时间偏差越来越大。
服务器上实际有2个时钟,一个是主板电池驱动的硬件时间(RTC或者CMOS时间),另外就是系统时间。服务器启动时会从RTC里读取一次时间,之后便靠中断来计时。可以设置ntpd同步后讲时间写回RTC.


语法:adjtimex [OPTION]… 主要参数说明:
-p, –print   输出内核时间变量的值
-t, –tick val    设置内核时钟计数间隔(微秒)
-f, –frequency newfreq   设置系统时钟偏移量
-c, –compare[=count]     比较系统时钟和CMOS时钟
-i, –interval tim    设置时钟比较间隔时间 (sec)
-l, –log[=file]  将当前时间记录到文件中
–host timeserver     查询时间服务器
-u, –utc     将CMOS时钟设置成UTC

在服务器上先比较一下系统时间和CMOS时间


# adjtimex --compare
                                      --- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1381503971     1.751318
1381503981     1.721794    -2952.4  10000  -1573016
1381503991     1.692179    -2961.5  10000  -1573016   10029   2456959
1381504001     1.662619    -2956.0  10000  -1573016   10029   2097584
1381504011     1.633055    -2956.4  10000  -1573016   10029   2122584
1381504021     1.603491    -2956.4  10000  -1573016   10029   2122584
1381504031     1.573928    -2956.3  10000  -1573016   10029   2117896
1381504041     1.544361    -2956.7  10000  -1573016   10029   2142896

然后使用
# adjtimex -t 10029
修改一下tick,重新手动同步后,再启动ntpd发现时间终于正常了。

此条目发表在OS分类目录。将固定链接加入收藏夹。