参考: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 -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