zoukankan      html  css  js  c++  java
  • linux时间管理

    /etc/sysconfig/clock

            该配置文件可用来设置用户选择何种方式显示时间。如果硬件时钟为本地时间,则UTC设为0,并且不用设置环境变量TZ。如果硬件时钟为UTC时间,则要设置UTC为1,并设置环境变量TZ(或配置文件/etc/TZ)为时区信息,如“Asia/Shanghai”。
     
    hwclock
    查看硬件时钟:
    [byeyear@cnblogs.com]$ hwclock –r
     
    /etc/localtime
            Linux的系统时区是通过符号连接/etc/localtime来得到的。可以通过tzset命令来设置时区,也可以通过命令“ln –s /etc/localtime /usr/share/zoneinfo/Asia/Shanghai”来将时区设置为亚洲的上海。
    或直接执行 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
     
    如果只是通过NTP服务器同步系统时间,可以使用命令ntpdate。Ntpdate用到的库包括:libcap.so.1 => /lib/libcap.so.1、libc.so.6 => /lib/tls/libc.so.6、/lib/ld-linux.so.2。
     
    查看当前时区

    date –R

    busybox的ntpd

    ntpd  -p ntp_server_addr -qNn

    hwclock –w

    ntpd vs ntpdate

    ntpdate直接调整时间到指定server。

    ntpd一方面将自己作为server响应下级请求,另一方面逐步调整本机时间以对齐上级服务器时间,因此ntpd既是client又是server。

    另有一个ntpclient程序可作为轻量级的ntp client使用。

    jiffies变量:unsigned long 型变量,要么与jiffies_64相同,要么取其低32位。

    比较缓存值与当前值:

    #include<linux/jiffies.h>

    int time_after(unsigned long a,unsigned long b);

    int time_before(unsigned long a,unsigned long b);

    int time_after_eq(unsigned long a,unsigned long b);

    int time _before_eq(unsigned long a,unsigned long b);
     

    如果需要精度很高的计时:

    x86上可以使用TSC:

    <asm/msr.h>

    // Architecture dependent

    rdtsc(low32,high32);

    rdtscl(low32);

    rdtscll(var64);

    一个与体系结构无关的函数:

    <linux/timex.h>

    cycles_t get_cycles(void);

    在不支持的平台上返回0。

    除了do_gettimeofday,还有一个函数可以获取绝对时间:

    struct timespec current_kernel_time(void);

    (?区别?)

    以上两个函数在ARM平台都是通过 xtime 变量得到数据的。

    adjtimex

    一般情况下,linux仅在启动时读下RTC,然后就用system ticks跑时钟了。

    氮素,RTC和用system ticks跑出来的时钟之间肯定是有偏差的,adjtimex可以计算出这个偏差是多少,并告诉内核该用怎样的参数去调整。

    有两个man page和adjtimex相关:

    man 2 adjtimex    # 这个是syscall 的adjtimex

    man 8 adjtimex    # 这个是sys util的adjtimex

    注意一下timex::freq的设置:

    if(timex::mode == ADJ_FREQUENCY)
    {
        // 当前时钟频率低,需要提高:freq为正
        // 当前时钟频率高,需要降低:freq为负
    }
  • 相关阅读:
    搭建自己的博客(九):使用shell模式批量添加博客文章并增加分页功能
    搭建自己的博客(八):使用fontawesome框架来添加图标以及美化详情页
    linux系列(十):cat命令
    linux系列(九):touch命令
    搭建自己的博客(七):使用bootstrap框架美化导航栏
    linux系列(八):cp命令
    搭建自己的博客(六):添加首页,使用css对界面做美化
    linux系列(七):mv命令
    Re-enable extensions not coming from Chrome Web Store on Chrome v35+ (with enhanced security)
    liblensfun 在 mingw 上编译时遇到的奇怪问题
  • 原文地址:https://www.cnblogs.com/byeyear/p/4237899.html
Copyright © 2011-2022 走看看