zoukankan      html  css  js  c++  java
  • linux操作系统的时间

    参考:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782
    linux平台中有硬件时钟与系统时钟两种时钟,一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时钟是要读取RTC时间来进行时间同步。

    1、系统时间的读取与设定

    date命令:以指定的形式显示时间或者设定系统时间。

    用法:date [选项]... [+格式]
     或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
    以给定的格式显示当前时间,或是设置系统日期。
    
      -d,--date=字符串		显示指定字符串所描述的时间,而非当前时间
      -f,--file=日期文件		类似--date,从日期文件中按行读入时间描述
      -r, --reference=文件		显示文件指定文件的最后修改时间
      -R, --rfc-2822		以RFC 2822格式输出日期和时间
    				例如:2006年8月7日,星期一 12:34:56 -0600
          --rfc-3339=TIMESPEC	以RFC 3339 格式输出日期和时间。
    				TIMESPEC=`date',`seconds',或 `ns' 
    				表示日期和时间的显示精度。
    				日期和时间单元由单个的空格分开:
    				2006-08-07 12:34:56-06:00
      -s, --set=字符串         	设置指定字符串来分开时间
      -u, --utc, --universal	输出或者设置协调的通用时间
          --help		显示此帮助信息并退出
          --version		显示版本信息并退出
    
    示例1:以指定的格式显示给定的时间

    date -d 20170301 +“%A %B”
    运行结果:星期三 三月

    示例2:以指定的格式显示文件中的时间(文件内容为20170301 20190611)

    date -f /home/sifang/time.txt +"%A %B"
    运行结果:
    星期三 三月
    星期二 六月

    示例3:以指定的格式显示当前时间

    date +"%A%B"
    运行结果:星期二六月

    示例4:显示文件的最后修改时间

    date -r filename

    示例5:设定系统时间

    date -s 20190611设置系统时间为2019年6月11时0点0分0秒
    date -s 17:55:55 设置系统时间为17点55分55秒
    date -s "20190611 17:55:55"设置系统日期和时间
    date -s "2019-06-11 17:00:00"设置系统日期和时间

    示例6:日期的加减

    date +%Y%m%d --date="-1 day" 显示前一天的日期
    date +%Y%m%d --date="+1 day" 显示后一年的日期
    date +%Y%m%d --date="-2 month" 显示前两个月的日期

    2、硬件时间的读取与设定

    hwclock 设置和显示硬件时间(一般只有root用户才有权限)

    -r, --show         读取并打印硬件时钟(read hardware clock and print result )
    -s, --hctosys      将硬件时钟同步到系统时钟(set the system time from the hardware clock )
    -w, --systohc     将系统时钟同步到硬件时钟(set the hardware clock to the current system time )
    
    --adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。 
    --debug  显示hwclock执行时详细的信息。 
    --directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。 
    --hctosys  将系统时钟调整为与目前的硬件时钟一致。 
    --set --date=<日期与时间>  设定硬件时钟。 
    --show  显示硬件时钟的时间与日期。 
    --systohc  将硬件时钟调整为与目前的系统时钟一致。 
    --test  仅测试程序,而不会实际更改硬件时钟。 
    --utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。 
    --version  显示版本信息。
    
    示例1:显示硬件时间

    hwclock -r或者hwclock

    示例2:以给定的时间设定硬件时间

    hwclock --set --date "2019-04-05 11:11:11"

    示例3:把硬件时间同步给系统时间

    hwclock -s

    示例4:把系统时间同步给硬件时间

    hwclock -w

    3、时区的读取与设置

    读取时区:date -R date +"%Z %z"
    timedatectl |grep "Timezone"

    设置时区的方法:
    方法一:图形界面

    系统--日期与时间设置--时区或者执行system-config-date打开(实际设置的是/etc/sysconfig/clock文件)

    方法二:文件拷贝

    执行命令ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime(立即生效)
    /usr/share/zoneinfo目录存放时区相关文件。

    方法三:tzselect

    执行tzselect,依据提示设置TZ环境变量。
    TZ='Asia/Shanghai'; export TZ

  • 相关阅读:
    解决<c:if>无else的问题
    极限挑战----3小时完成OA系统(失败)
    jstl的if标签和forEach标签的解析
    EL表达式
    JSP静态包含和动态包含的区别
    JSP九大隐式对象和四大域对象-----面试
    mybatis学习01--基础认识
    怎样将本地的代码上传到github
    随机数的生成,静态导入,可变参数的方法,方法重载,浮点数的比较
    zookeeper学习2
  • 原文地址:https://www.cnblogs.com/21summer/p/11003265.html
Copyright © 2011-2022 走看看