http://blog.csdn.net/myvstar/archive/2006/08/31/1151059.aspx
(好像不能用了,我的如下错误》》》1 Aug 00:14:43 ntpdate[5319]: no server suitable for synchronization found)
手动同时间服务器同步:
$ sudo ntpdate s1a.time.edu.cn
将同步后的准确时间写入BIOS:
$ sudo hwclock --systohc教育网的时间服务器列表这里有
http://www.time.edu.cn/mem.htm
http://hi.baidu.com/luyun21/blog/item/602358090db3ccaa2fddd433.html
时间同步
2008年05月16日 星期五 17:08
发现 ubuntu 总是时间不对劲,用一个晚上学习和尝试解决,总结一下。
学习要点(尽量在终端应用):
时区设置 date hwclock ntpdate crontab 运行级
一、设置时区
1.新建了目录:
sudo mkdir /etc/sysconfig
2.新建了 clock 文件:
sudo gedit /etc/sysconfig/clock
文档内容为:
#My Config
ZONE=”Asia/Shanghai”
该文档是本地时区设置文档,本地时区被设置为 亚洲/上海
3.将时区文档 Shanghai 复制并覆盖为: /etc/localtime:
sudo cp -i /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
二、手动校时
date MMDDhhmmYYY(月日时分年)
该命令用来调整 linux 系统时间
hwclock [-rw]
该命令用来将系统当前时间写进 BIOS
1.校时
打开 http://www.time.ac.cn/default.asp 显示中科院国家授时中心网络时间作参考,然后调整如:
sudo date 032421152006
2.查看系统时间与BIOS时间是否差异:
sudo date;hwclock -r
显示如:
五 3月 24 21:38:15 CST 2006
2006年03月24日 星期五 21时40分12秒 -0.679739 seconds
有差异的。
3.将系统时间写入BIOS
sudo hwclock -w
OK!
因为每次开机,系统会重新从BIOS获得时间,所以BIOS时间正确才是首要的。
这是手动校时,每次都要手动,不爽,下面用自动的。
三、网络校时
首先增加防火墙 shorewall 规则,放行 ntpdate 的 udp 123 端口:
sudo gedit /etc/shorewall/rules
增加划线内的规则:
==================
ACCEPT fw net udp 123
ACCEPT net fw udp 123
==================
*先来了解需要用到的网络时间同步命令:
ntpdate 时间服务器
如:
sudo ntpdate 210.72.145.44 (或 210.0.235.14 或 137.189.11.66)
回复像如下信息即校时成功:
step time server 210.0.235.14 offset 1581.457933 sec
该命令也是手动校时,却比 date 修改时间好多了。
现在来实现自动校时:
设置每30分钟自动时间同步(推荐):
(1)编辑临时任务文件
gedit /tmp/mycrontab
内容:
*/30 * * * * root /usr/sbin/ntpdate 210.72.145.44 ;/sbin/hwclock -w ;echo: “Ntpdate Successful! $(date)” >> /tmp/mycron.log
以上共3个命令,分号分开。
第一个是:以root用户身份每30分钟自动与时间服务器 210.72.145.44 同步。
规则是:(五个时间+[用户]+[多条]命令) 分 时 日 月 周 [用户] [多条]命令
参考:Crontab How To
第二个是:将系统时间写入BIOS。
第三个是:将成功执行该crontab的信息写入 /tmp/mycron.log 文件(主意:当确定该计划任务执行正确后,这个命令是不必要的,应该去掉,否则,长期下去 mycron.log文件很快就撑暴了)。
(2)安装计划任务
要使该计划任务成功执行,需要以sudo身份安装该crontab:
sudo crontab /tmp/mycron.log
这样,每30分钟,系统时间就会与时间服务器自动同步了,可查看 /tmp/mycron.log 记录:
cat /tmp/mycron.log。
为了保证时间同步成功,不要太频繁与时间服务器同步,每分钟同步是不必要的。
取消该crontab:
sudo crontab -r
查看当前的 crontab:
sudo crontab -l
修改该计划任务:
需要重新安装crontab,即修改 /tmp/mycrontab 文件,然后用 sudo crontab /tmp/mycrontab 命令重新安装。
每个用户都有自己的 crontab,这里用 sudo ,是因为 ntpdate 需要 root 权限。
设置开机自动校时:
(1)设置时间服务器:
sudo gedit /etc/default/ntpdate
全文修改为:
===================
# servers to check. (Separate multiple servers with spaces.)
#NTPSERVERS=”pool.ntp.org”
#NTPSERVERS=”ntp.ubuntulinux.org”
#中国科学院国家授时中心 210.72.145.44
#香港 137.189.11.66 或 210.0.235.14
NTPSERVERS=210.72.145.44
NTPSERVERS=137.189.11.66
NTPSERVERS=210.0.235.14
# additional options for ntpdate
#NTPOPTIONS=”-v”
#-u 参数是指定使用无特权的端口发送数据包。
#当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。
#NTPOPTIONS=”-u”
==================
保存退出
(2)自动启动 ntpdate (网络时间同步服务客户端, ntpd 为服务器端)
当 /etc/rcS.d/ 目录存在 ntpdate 没有启动的链接文件如 s51ntpdate 时,将小写 s 改为大写 S :
sudo mv /etc/rcS.d/s51ntpdate /etc/rcS.d/S51ntpdate
当 /etc/rcS.d/ 目录不存在 ntpdate 链接文件时,建立该链接:
sudo ln -s /etc/init.d/ntpdate /etc/rcS.d/S51ntpdate
(S51ntpdate 在网卡启动、宽带上网、防火墙启动之后启动)
(若用 sudo update-rc.d ntpdate defaults 命令,则同时建立rc2~6运行级的S20ntpdate链接)
这样,系统启动后,ntpdate 网络时间同步服务就被启动了。