星期四, 六月 22, 2006

在debian下解决时间同步的问题

在debian下解决时间同步的问题

在前几天的文章debian下如何修正系统时间中me 提到了时间同步存在的问题,虽然不大影响使用,但麻烦可是够麻烦的。因为系统在启动后登录gdm前的时间是错的,为了使debian系统在log时不发生 时间错乱,me只好按下alt+f1之类的键,进入cli更改系统时间,然后再用gdm登录,否则就会有8个小时的误差。要知道时间和空间是物理和哲学的 两大基础,对任何事情都有着不小的影响,时间错乱可千万是要不得。问题还是得想法解决。

学习了ntpdate的用法后,me用自己掌握的有限的shell编程知识弄了个脚本,并通过crontab进行调用,每个小时同步一次,保障时间是准确的。脚本内容如下:

garden:~/bin# cat ntpupdate
#!/bin/sh
/usr/sbin/ntpdate time.nist.gov | logger -t NTP
/sbin/hwclock -w
然后crontab -u root -e,把这个工具加入到自动运行的机制中,内容如下:

garden:~/bin# crontab -u root -l
# m h  dom mon dow   command
3 * * * * /root/bin/ntpupdate
通过这种方式,登录后不超过一个小时,debian会使用ntpdate工具自动和internet上的时间服务器同步,呵呵,爽啊,现在每次对时间me 都要看看debian的系统时间,因为这个是最准的嘛。但仍是有问题没有解决,那就是在该脚本自动按照一定的周期同步之前的时间仍然是错误的,也就是说提 前了8个小时。

实在没有办法了,me突然想:难道是cmos中的时间设置错了。重新启动,按下del进入cmos设置界面,看时间居然是好的。这说明问题就出现在debian启动的过程中。

google了下,学习了不少关于debian类似的linux操作系统的启动过程。先调用/etc/rcS.d目录下的所有脚本,然后再根据 runlevel确定执行/etc/rc*.d下的脚本。在rcS.d目录下找到ntpdate的链接,看来安装了ntpdate后它自动会把自己加入启 动脚本组的。

通过分析,有两种可能导致时间错乱:debian启动时对系统时间根据时区设置进行了处理,但是错了,另外就是在这种情况下后来的修正工具(ntpdate)未能发挥作用。

仔细查阅rcS.d,发现有几个hwclock相关的脚本。用lynx查看,不知其所以然。后来想,还是得通过ntpdate解决问题为上策。不管前面如何处理,只要ntpdate起了作用,那时间就不会在debian系统启动的过程中错掉。

再次启动系统,死盯着快速闪过的一行行启动信息,突然看到了ntpdate的提示语句,好像是说域名解析暂时无法使用。嘿,问题就在这里了。

man ntpdate;找到了ntpdate的配置相关文件,分别是/etc/init.d和/etc/default目录下的ntpdate,其他如 rcS.d下的仅仅是链接而已,只要前两个改好了,其他都会好的。在配置文件中发现了它设定时间服务器为pool. ntp.org,me对此域名执行ping命令,把得到的ip“207.210.74.166
”对域名进行替换。虽然感觉心里还是没底,但觉得好像是找到了问题的关键。

重新启动,debian在运行ntpdate的时候稍微停了一下,哈哈,看来是好了。进入系统,果不其然,时间终于正确了。世界从此清静。

下次有时间得仔细研究研究为什么在运行ntpdate的时候域名解析居然还没有设置好。



Technorati Tags: , , ,

没有评论: