zoukankan      html  css  js  c++  java
  • linux时间准度问题

     

     在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系。系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不间断。但在Linux下,默认情况下,系统时间和硬件时间并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠BIOS电池来维持,而系统时间,是用CPU Tick来维持的。在系统开机的时候,会自动从BIOS中取得硬件时间,设置为系统时间。 

    1. Linux系统时间的设置

    在Linux中设置系统时间,可以用date命令:

      1 //查看时间
    2 [root@node1 ~]# date
    3 Tue Feb 25 20:15:18 CST 2014
    4 //修改时间
    5 [root@node1 ~]# date -s "20140225 20:16:00"  #yyyymmdd hh:mm:ss
    6 Tue Feb 25 20:16:00 CST 2014
    7 //date 有多种时间格式可接受,查看date --help

    2. Linux硬件时间的设置

    硬件时间的设置,可以用hwclock或者clock命令。两者基本相同,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

      1 //查看硬件时间可以是用hwclock ,hwclock --show 或者 hwclock -r
    2 [root@node1 ~]# hwclock --show
    3 Tue 25 Feb 2014 08:21:14 PM CST -0.327068 seconds
    4 //设置硬件时间
    5 [root@node1 ~]# hwclock --set --date "20140225 20:23:00"
    6 [root@node1 ~]# hwclock
    7 Tue 25 Feb 2014 08:23:04 PM CST -0.750440 seconds

     3. 系统时间和硬件时间的同步

    同步系统时间和硬件时间,可以使用hwclock命令。

     
    1 //以系统时间为基准,修改硬件时间
    2 [root@node1 ~]# hwclock --systohc <== sys(系统时间)to(写到)hc(Hard Clock)
    3 //或者
    4 [root@node1 ~]# hwclock -w
    5 //以硬件时间为基准,修改系统时间
    6 [root@node1 ~]# hwclock --hctosys
    7 //或者
    8 [root@node1 ~]# hwclock -s
     

    4. 不同机器之间的时间同步

    为了避免主机时间因为长期运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务端和ntp客户端。在生产系统中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。

    不同机器间同步时间,可以使用ntpdate命令,也可以使用ntpd服务。

    4.1 ntpdate命令 

    使用ntpdate比较简单。格式如下:

    1 [root@node1 ~]# ntpdate [NTP IP/hostname]
    2 [root@node1 ~]# ntpdate 192.168.0.1
    3 [root@node1 ~]# ntpdate time.ntp.org

    但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果CPU Tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:

     
    0 12 * * * /usr/sbin/ntpdate 192.168.0.1

    这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1。

    或者将下列脚本添加到/etc/cron.hourly/,这样就每小时会执行一次同步:

     

    #!/bin/bash
    #
    # $Id: sync-clock,v 1.6 2009/12/23 15:41:29 jmates Exp $
    #
    # Use ntpdate to get rough clock sync with department of Genome Sciences
    # time server.

    NTPDATE=/usr/sbin/ntpdate
    SERVER="192.168.0.1 "

    # if running from cron (no tty available), sleep a bit to space
    # out update requests to avoid slamming a server at a particular time
    if ! test -t 0; then
    MYRAND=$RANDOM
    MYRAND=${MYRAND:=$$}

    if [ $MYRAND -gt 9 ]; then
    sleep `echo $MYRAND | sed 's/.*(..)$/1/' | sed 's/^0//'`
    fi
    fi

    $NTPDATE -su $SERVER
    # update hardware clock on Linux (RedHat?) systems
    if [ -f /sbin/hwclock ]; then
    /sbin/hwclock --systohc
    fi



  • 相关阅读:
    msyql多个or,and,
    mysql中 where in 用法详解
    history.back(-1)和history.go(-1)的区别
    经典 mysql 28道题
    企业案例(二):增量恢复案例
    企业案例(一):由于mysql sleep线程过多小故障
    mysql数据库恢复
    binlog介绍
    mysql 数据库备份
    docker入门与实践
  • 原文地址:https://www.cnblogs.com/zgyw/p/12320335.html
Copyright © 2011-2022 走看看