linux时钟
linux时钟分为系统时钟和硬件时钟。
系统时钟是指当前linux kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。
当linux启动时,从硬件时钟读取时钟;读取完成以后,就不再与硬件关联
系统时钟的查看设置通过date命令,硬件时钟的查看设置通过hwclock命令
date
-
命令演示
- 利用format格式自定义输出系统时间
- 指定时间输出的格式,显示当前系统时间,格式有很多种,本次主要列出常用的(如上图)作为演示,其它format可以man date进行查看及学习
- 本次演示也会展示一些常出错的写法,请多多留意
[root@localhost ~]# date
2017年 07月 26日 星期三 19:09:51 CST
[root@localhost ~]# date %F
date: 无效的日期"%F"
[root@localhost ~]# date +%F
2017-07-26
[root@localhost ~]# date +%Y
2017
[root@localhost ~]# date +%m
07
[root@localhost ~]# date +%d
26
[root@localhost ~]# date +%T
19:11:01
[root@localhost ~]# date +%H
19
[root@localhost ~]# date +%M
11
[root@localhost ~]# date +%S
20
[root@localhost ~]# date +%Y/+%m/+%d
2017/+07/+26
[root@localhost ~]# date +%m/%d/%Y
07/26/2017
[root@localhost ~]# date +%Y-%m-%d
2017-07-26
[root@localhost ~]# date +%Y@%m@%d
2017@07@26
[root@localhost ~]# date +%Y*%m*%d
2017*07*26
[root@localhost ~]# date +%T
19:14:36
[root@localhost ~]# date +%H-%M-%S
19-14-39
[root@localhost ~]# date +%H:%M:%S
19:14:54
[root@localhost ~]# date +%Y-%m-%d +%H:%M:%S
date: 额外的操作数 "+%H:%M:%S"
[root@localhost ~]# date +%Y-%m-%d %H:%M:%S
date: 额外的操作数 "%H:%M:%S"
[root@localhost ~]# date "+%Y-%m-%d +%H:%M:%S"
2017-07-26 +19:15:45
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2017-07-26 19:15:52
[root@localhost ~]# date "+%F %T"
2017-07-26 19:16:10
[root@localhost ~]# date +%s
1499188107
[root@localhost ~]# date +%I%p
07下午
[root@localhost ~]# date "+%P %I:%H:%S"
下午 07:19:24
[root@localhost ~]# date +%r
下午 07时45分05秒
[root@localhost ~]# date +%T
19:47:04
[root@localhost ~]#
- date [MMDDhhmm[[CC]YY][.ss]:设置时间
- 这种方式每部分的时间表示必须是两位数值,如MM表示1月,必须是01;且数值是有范围的
- 这种方式有严格的顺序要求,不能够颠倒顺序表示时间
- 由于以上两种限制,通常用这种方式来同时设置全部时间(月日时分年秒)
[root@localhost ~]# date
2017年 07月 26日 星期三 19:20:35 CST
[root@localhost ~]# date 0715101015.40
2015年 07月 15日 星期三 10:10:40 CST
[root@localhost ~]# date 073210102015.40
date: 无效的日期"073210102015.40"
[root@localhost ~]# date 0715101020153234.40
date: 无效的日期"0715101020153234.40"
[root@localhost ~]# date 07151010234322015.40
date: 无效的日期"07151010234322015.40"
[root@localhost ~]# date 0715101015.61
date: 无效的日期"0715101015.61"
[root@localhost ~]# date 715101015.40
date: 无效的日期"715101015.40"
[root@localhost ~]# date 075101015.40
date: 无效的日期"075101015.40"
[root@localhost ~]# date 070511015.40
date: 无效的日期"070511015.40"
[root@localhost ~]# date 0705011015.40
2015年 07月 05日 星期日 01:10:40 CST
[root@localhost ~]# date 070501215.40
date: 无效的日期"070501215.40"
[root@localhost ~]# date 0705010215.40
2015年 07月 05日 星期日 01:02:40 CST
[root@localhost ~]# date 070501007.40
date: 无效的日期"070501007.40"
[root@localhost ~]# date 0705010007.40
2007年 07月 05日 星期四 01:00:40 CST
[root@localhost ~]# date 0705010017.1
date: 无效的日期"0705010017.1"
[root@localhost ~]# date 0705010017.01
2017年 07月 05日 星期三 01:00:01 CST
- date -s ,根据字符串设定系统时间:设置时间
- 若设置时间的字串中没有符号"-" "/" ":"
- 只能单独设置年月日,一共占8个或6个字符
顺序为年月日,年占4或2个字符,月和日各占2个字符,如05年,0不能省略;05月0不能省略,05日0不能省略;设置2005年5月5日,date -s 050505或20050505。此时时分秒变为全0。 - 只能单独设置小时分钟,一共占3个或4个字符
顺序为小时分钟,且小时占1或2个字符,分钟2个字符;如5或05表示5时;设置5时05分,date -s 505或0505 - 年月日和小时分钟一起设置,两者中间需用空格分开,此时不能设置秒数
- 只能单独设置年月日,一共占8个或6个字符
- 若设置时间字串中使用"-" "/" ":"
- 对于"-" "/"用于年月日,顺序分别为年-月-日,月/日/年;此时年占2或4个字符,月和日可以是1或2个字符,如设置2007年06月05日,date -s [20]07-[0]6-[0]5,date -s [0]6/[0]5/[20]07。此时时分秒变为全0。
- 对于":"用于设置时分秒,每部分可以是1或2个字符表示。
- 年月日和小时分钟一起设置,两者中间需用空格分开。
[root@localhost ~]# date -s 050607
2005年 06月 07日 星期二 00:00:00 CST
[root@localhost ~]# date -s 980607
1998年 06月 07日 星期日 00:00:00 CST
[root@localhost ~]# date -s 20980607
2098年 06月 07日 星期六 00:00:00 CST
[root@localhost ~]# date -s 50607
date: 无法设置日期: 无效的参数
0005年 06月 07日 星期二 00:00:00 LMT
[root@localhost ~]# date
2098年 06月 07日 星期六 00:00:21 CST
[root@localhost ~]# date -s 05607
date: 无效的日期"05607"
[root@localhost ~]# date -s 05067
date: 无效的日期"05067"
[root@localhost ~]# date -s 050607
2005年 06月 07日 星期二 00:00:00 CST
[root@localhost ~]#
[root@localhost ~]# date -s 0607
2005年 06月 07日 星期二 06:07:00 CST
[root@localhost ~]# date -s 607
2005年 06月 07日 星期二 06:07:00 CST
[root@localhost ~]# date -s 067
date: 无效的日期"067"
[root@localhost ~]# date -s 67
date: 无效的日期"67"
[root@localhost ~]#
[root@localhost ~]# date -s "050607 0102"
2005年 06月 07日 星期二 01:02:00 CST
[root@localhost ~]# date -s "050607 102"
2005年 06月 07日 星期二 01:02:00 CST
[root@localhost ~]# date -s "20050607 102"
2005年 06月 07日 星期二 01:02:00 CST
[root@localhost ~]#
[root@localhost ~]# date -s 05-06-07
2005年 06月 07日 星期二 00:00:00 CST
[root@localhost ~]# date -s 2005-06-07
2005年 06月 07日 星期二 00:00:00 CST
[root@localhost ~]# date -s 98-06-07
1998年 06月 07日 星期日 00:00:00 CST
[root@localhost ~]# date -s 2098-06-07
2098年 06月 07日 星期六 00:00:00 CST
[root@localhost ~]# date -s 8-06-07
date: 无法设置日期: 无效的参数
[root@localhost ~]# date -s 05-6-7
2005年 06月 07日 星期二 00:00:00 CST
[root@localhost ~]#
[root@localhost ~]# date -s 05/06/07
2007年 05月 06日 星期日 00:00:00 CST
[root@localhost ~]# date -s 05/06/2007
2007年 05月 06日 星期日 00:00:00 CST
[root@localhost ~]# date -s 05/06/98
1998年 05月 06日 星期三 00:00:00 CST
[root@localhost ~]# date -s 05/06/2098
2098年 05月 06日 星期二 00:00:00 CST
[root@localhost ~]# date -s 5/6/7
date: 无法设置日期: 无效的参数
0007年 05月 06日 星期日 00:00:00 LMT
[root@localhost ~]# date -s 5/6/07
2007年 05月 06日 星期日 00:00:00 CST
[root@localhost ~]#
[root@localhost ~]# date -s 10:11:12
2007年 05月 06日 星期日 10:11:12 CST
[root@localhost ~]# date -s 05:06:07
2007年 05月 06日 星期日 05:06:07 CST
[root@localhost ~]# date -s 5:06:07
2007年 05月 06日 星期日 05:06:07 CST
[root@localhost ~]# date -s 5:6:07
2007年 05月 06日 星期日 05:06:07 CST
[root@localhost ~]# date -s 5:6:7
2007年 05月 06日 星期日 05:06:07 CST
[root@localhost ~]# date -s 5:6:
date: 无效的日期"5:6:"
[root@localhost ~]# date -s 5:6
2007年 05月 06日 星期日 05:06:00 CST
[root@localhost ~]# date -s 5:
date: 无效的日期"5:"
[root@localhost ~]# date -s 5
2007年 05月 06日 星期日 05:00:00 CST
[root@localhost ~]# date -s 5:04:7
2007年 05月 06日 星期日 05:04:07 CST
[root@localhost ~]# date
2017年 07月 30日 星期日 21:06:58 CST
[root@localhost ~]# date -u
2017年 07月 30日 星期日 13:07:01 UTC
[root@localhost ~]#
- date -d,--date=STRING,根据字符串显示时间,而不是当前时间
- STRING,非常灵活,可以通过字符串指定显示过去或将来的某一时间,如年、月、分钟、分钟、秒、星期等
- 可以和FORMAT格式一起使用,以指定的格式输出非当前时间
- STRING,也可以和-s设置时间的字符串使用,如:date -d 150727,显示2016年7月27日,就知道是星期几。
[root@localhost ~]# date
2017年 07月 30日 星期日 21:15:20 CST
[root@localhost ~]# date -d "+1 day"
2017年 07月 31日 星期一 21:15:31 CST
[root@localhost ~]# date -d "-1 day"
2017年 07月 29日 星期六 21:15:36 CST
[root@localhost ~]# date -d "+1 month"
2017年 08月 30日 星期三 21:16:55 CST
[root@localhost ~]# date -d "-1 month"
2017年 06月 30日 星期五 21:17:04 CST
[root@localhost ~]# date -d "-1 hour"
2017年 07月 30日 星期日 20:17:14 CST
[root@localhost ~]# date -d "+10 hour"
2017年 07月 31日 星期一 07:17:30 CST
[root@localhost ~]# date
2017年 07月 30日 星期日 21:16:00 CST
[root@localhost ~]# date -d "+1 minute"
2017年 07月 30日 星期日 21:17:11 CST
[root@localhost ~]# date -d "-1 minute"
2017年 07月 30日 星期日 21:15:19 CST
[root@localhost ~]# date
2017年 07月 30日 星期日 21:18:19 CST
[root@localhost ~]# date -d "-10 second"
2017年 07月 30日 星期日 21:18:17 CST
[root@localhost ~]# date -d "+1 year"
2018年 07月 30日 星期一 21:17:51 CST
[root@localhost ~]# date -d "-10 year"
2007年 07月 30日 星期一 21:18:05 CST
[root@localhost ~]# date -d tomorrow
2017年 07月 31日 星期一 21:28:10 CST
[root@localhost ~]# date -d yesterday
2017年 07月 29日 星期六 21:28:37 CST
[root@localhost ~]# date -d last-month
2017年 06月 30日 星期五 21:28:46 CST
[root@localhost ~]# date -d "last month"
2017年 06月 30日 星期五 21:29:08 CST
[root@localhost ~]# date -d next-month
2017年 08月 30日 星期三 21:29:23 CST
[root@localhost ~]# date -d " 1 day ago"
2017年 07月 29日 星期六 21:29:39 CST
[root@localhost ~]# date -d " 3 day ago"
2017年 07月 27日 星期四 21:29:55 CST
[root@localhost ~]# date +%F -d "+10 year"
2027-07-30
[root@localhost ~]# date +%T -d "+10 minute"
21:30:06
[root@localhost ~]#
[root@localhost ~]# date -d monday
2017年 07月 31日 星期一 00:00:00 CST
[root@localhost ~]# date -d tues
2017年 08月 01日 星期二 00:00:00 CST
[root@localhost ~]# date -d wed
2017年 08月 02日 星期三 00:00:00 CST
[root@localhost ~]# date -d thur
2017年 08月 03日 星期四 00:00:00 CST
[root@localhost ~]# date -d fri
2017年 08月 04日 星期五 00:00:00 CST
[root@localhost ~]# date -d "last fri"
2017年 07月 28日 星期五 00:00:00 CST
[root@localhost ~]# date -d "nov 13"
2017年 11月 13日 星期一 00:00:00 CST
[root@localhost ~]# date -d "jun 13"
2017年 06月 13日 星期二 00:00:00 CST
[root@localhost ~]# date -d 080909
2008年 09月 09日 星期二 00:00:00 CST
hwclock
命令演示
[root@localhost ~]# hwclock
2017年07月30日 星期日 21时51分51秒 -0.131554 秒
[root@localhost ~]#
[root@localhost ~]# date
2017年 07月 30日 星期日 21:52:05 CST
[root@localhost ~]# date -s "170630 1020"
2017年 06月 30日 星期五 10:20:00 CST
[root@localhost ~]# date
2017年 06月 30日 星期五 10:20:02 CST
[root@localhost ~]# hwclock -s
[root@localhost ~]# date
2017年 07月 30日 星期日 21:52:59 CST
[root@localhost ~]# hwclock -w
[root@localhost ~]# hwclock
d2017年07月30日 星期日 21时53分45秒 -0.553512 秒
[root@localhost ~]# date
2017年 07月 30日 星期日 21:53:45 CST
[root@localhost ~]#