想象一下你有一台服务器,上面运行者一个IRC服务,假设在服务器10:00的时候管理员封禁一名不文明用语的,1小时内不容许他发言。然后忽然发现服务器时间快了10分钟,而后改过来。10:00-9:50 = -10分钟,呵呵? 假设程序判断逻辑时这样的:程序员
unsigned int left = now - (member->start_time); if (left >= 60) release(member);
若是按上面改了时间那种状况:那名参与者的会忽然发现本身能发言了,因而IRC就被不和谐言论淹没了。。。。windows
固然,负责任的程序员会考虑到程序的鲁棒性,尽量防止时间异常致使的各类问题,但也架不住每天加班,身心憔悴,一不当心。并且如今网络的许多服务都严重依赖于时间的正确性,你不可能让全部程序都能正确处理时间异常问题。服务器
协调世界时(英:Universal Time Coordinated ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不一样,做为妥协,简称UTC。网络
安装过Linux和Windows双系统的都知道,设置时间的时候会让你选择UTC仍是localtime,选择UTC的通常都会快几个小时(好比我)。这是由于windows和Linux对于UTC时间处理机制不同的关系: Linux与Windows不一样之处是Linux把世界时间(UTC)做为BIOS时间,本地时间(Local Time)是用户所在时区与国际时间的差值,而Windows中直接把本地时间做为BIOS时间。在多操做系统环境下这种不一样的时间机制将使时间没法正确显示。结决方法是:/etc/default/rcS把其中的UTC=yes改成UTC=no,也就是不把硬件时钟当成UTC时间。函数
当时间发生错误的时候,我之前通常就直接ntpdate serverIP,但这样会形成时间的跃变,发生上面哪一种状况。 而应该配置ntpd服务,若是你使用Debian,那么直接sudo apt-get install ntp
,系统会自动安装配置ntp服务,注意ntp更新的依据是你的市区,请使用 sudo dpkg-reconfigure tzdata配置好你的时区。操作系统
PS: 对于时间相差比较大的时候,例如差了好几个小时,ntpd就整不了,由于ntpd是一种渐变式的时间校订,若是时间相差过大,虽然不会像ntpdate那样致使时间跳跃致使崩溃,但渐变校订须要时间,多是服务器长期处于数据混乱状态,还不以下线。这时候通常就是下线服务使用ntpdate调整以后在上线。 PS2:对于ntp客户端,若是你本身搭建了时间服务器,能够在客户端的/etc/ntp.conf设置服务。设计
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是一般可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,以后系统时钟即独立运做。全部Linux相关指令与函数都是读取系统时钟的设定。code
这样设计的好处时能够临时更改系统的时间以达到某种目的,例如一台在北京的服务器但愿与在美国的服务器同步数据(例如做为Debian的APT服务器),而数据则是根据时间戳来判断的,这时候就能够将时间暂时调整为美国时间,更新完毕后在使用hwclock获取硬件时钟,改回来便可。此外若是远程时间服务器异常,也可使用hwclock暂时更改。server
Linux内核会牢牢跟踪硬件时钟。在启动时,Linux会依据硬件时间设置本身的系统时间。设置成功以后,两个时钟相互独立运行。若是要将系统时间同步到硬件时钟,执行:hwclock --set --date="2011-08-14 16:45:05"
,若是你但愿直接使用utc或者localtime,使用hwclock --set --utc
或者hwclock --set --localtime
。注意hwclock须要root权限,并且不会提示Orz。ip