知识储备
1. RTC:Real Time Clock,实时时钟,指的是硬件时钟;
2. 系统启动方式
对于Windows,启动后从RTC取得时间,设置为系统时间;系统时钟=RTC
对于Linux,系统时钟启动时系统时钟会去读取硬件时钟的设定,然后独立于硬件时钟运作,计时用的是Kernel的软件时钟[可能因为CPU繁忙导致与硬件时钟不一致],Linux命令采用时钟均为系统时钟;系统时钟≠RTC
3. 在Linux上时间管理的命令大致有date、clock、hwclock、cal等
Date命令
Usage:
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
常用选项:
-d, --date=STRING 显示STRING指定的时间
#date -d '2015-8-8' 显示2015年8月8日日期
#date --date='2015-8-8' 显示2015年8月8日日期
#date -d '1 day ago' 获取前一天的日期+时间并显示
-s, --set=STRING 设置STRING指定的时间
#date -s '2015-8-8' 设置日期为2015年8月8日,请注意这里修改的是系统时钟[模拟时钟]
#date --date='12:12:12' 设置时间为12:12:12,请注意日期和时间是俩码事
-u, --utc, --universal 显示或设置协调世界时[就是常见的时区UTC+8这种的UTC时间]
#date [-u|--utc|--universal] 显示协调世界时
FORMAT选项:
说白了就是将日期时间按照指定格式输出,举个简单例子我想用24时间制,而你用12时间制
#date +%Y-%m-%d 按照‘年份-月份-几号’显示时间,请不要丢掉+和%,中间的-是连字符可任意
#date +Today' 'is' '%A. 这个命令显示结果是'Today is Saturday.'本质上仅仅调用周几,其他是STRING
#date +Now' 'time:%H:%M:%S 显示结果是‘Now time:12:42:28’
format规定了很多格式参数的调用方法,具体参考man手册或--help,常用即是如此。
Clock命令、与Hwclock命令
这两个本质上一个命令[我们可以man clock可以看出来],只不过,主要用来查询和设置硬件时钟[RTC]
hwclock [function] [options...]
常用选项:
-r, --show 读取硬件时钟并以标准格式输出,显示时间总是当地时间
#hwclock --show 显示的结果是Sat 22 Aug 2015 07:56:21 PM CST -0.447609 seconds显然不同于系统时钟
--set 用给定的时间(--date 选项)设置硬件时间
#hwclock --set --date='2015-8-8' 将给定的2015-8-8时间设置为硬件时间RTC
-s, --hctosys 以硬件时钟为参考,设置系统时钟
#hwclock -s // Sat Aug 22 12:06:38 CST 2015
#hwclock --hctosys // Sat Aug 22 12:06:38 CST 2015
-w, --systohc 以系统时钟为参考,设置硬件时钟
#hwclock -w // Sat 22 Aug 2015 12:08:19 PM CST -0.893316 seconds
#hwclock --systohc // Sat 22 Aug 2015 12:08:33 PM CST -0.970060 seconds
Cal命令
这个命令严格来说算不上时间管理,可以用来查看日历等时间信息
Usage:
cal [-13smjyV] [[[day] month] year]
常用选项:
#cal 没有参数的情况下,显示该月的日历
#cal -1 查看一个月内的日历
#cal -3 查看三个月内的日历 分别为上个月、这个月、下个月
#cal -j 查看罗马日历
#cal -m 以星期一开头,显示日历 不知道是不是针对中国的优化。
#cal -s 以星期日开头,显示日历
#cal -y 查看12个月的日历
#cal -V 显示版本信息并退出cal命令 请注意是大写V
#cal 3 3 2015 当你指定了年月日这个参数,能够定位到那天所在的日历,很有趣,可以快速查询某年某月某天是周几