linux操作系统的时间

Posted 21summer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\n 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 -Rdate +"%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

以上是关于linux操作系统的时间的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段01

[linux][c/c++]代码片段02

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

linux中怎么查看mysql数据库版本

如何检测 SUSE Linux 系统中的音频可用性

C#程序员经常用到的10个实用代码片段 - 操作系统