Date命令详解——如何设置linux系统时间
date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
时间方面:
% : 印出 %
%n : 下一行
%t : 跳格
%H :小时(0..23)
%I : 小时(01..12)
%k : 小时(0..23)
%M : 分钟(0..59)
%p : 显示本地时段“上午”或“下午”
%r : 直接显示时间(12 小时制,格式为hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00UTC 到目前为止的秒数
%S : 秒(00.59)
%T : 直接显示时间(24 小时制)
%X : 相当于 %H:%M:%S(12小时制,时分秒)
%Z : 显示时区(如EST)
例如
date +%H:%M:%S
15:16:52
date +%X
03:18:57 PM (下午3点18秒)
date +%T
15:23:48
日期方面:
%a : 星期几 (Mon..Sun)
%A : 星期几 (Monday..Sunday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53)(以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53)(以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
例如
date +%Y-%m-%d
2014-01-05
date +%x
01/05/2014
date +"%Y-%m-%d %H:%M:%S"
2014-01-05 15:21:00
例子 :
显示时间后跳行,再显示目前日期:
date +%T%n%D
15:22:23
01/05/14
显示月份与日数 :
date +%B%d
January05
注意 :
当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date +%-H:%-M:%-S 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。当你以 root 身份更改了系统时间之后,请记得以clock -w 来将系统时间写入CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。
Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前LinuxKernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux启动时,系统时钟会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。
Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock。
硬件时间和系统时间的同步
按照前面的说法,重新启动系统,系统时间会读取硬件时间,实现同步,但是在不重新启动的时候,需要用hwclock命令实现同步。
硬件时钟与系统时钟同步:
# hwclock --hctosys(hc代表硬件时间,sys代表系统时间)
系统时钟和硬件时钟同步:(让系统的时间同步到硬件时钟)
# hwclock --systohc
设置系统时间
date --set 14:37:50
clock –w
将日期时间设置成1996年6月10日下午1点12分0秒可以用
#date -s "06/10/1996 13:12:00" (格式是"MM/DD/YYYYhh:mm:ss")
或者
#date 061013121996.00 (格式是MMDDhhmmYYYY.ss (月日时分年.秒))
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性, Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。
#hwclock -w
这个命令强制把系统时间写入CMOS,(等同于hwclock--systohc)
1.在虚拟终端中使用date命令来查看和设置系统时间
查看系统时钟的操作:
#date
设置系统时钟的操作:
#date 091713272003.30
通用的设置格式:
#date 月日时分年.秒
2.使用hwclock或clock命令查看和设置硬件时钟
查看硬件时钟
#hwclock --show
或
#clock --show
2003年09月17日星期三 13时24分11秒 -0.482735seconds
设置硬件时钟的操作:
# hwclock --set --date="09/17/200313:26:00"
或者
# clock --set --date="09/17/200313:26:00"
通用的设置格式:hwclock/clock --set --date=“月/日/年时:分:秒”。
显示/查看时区
[root@nginx01 ~]# timedatectl
Local time: 四 2019-03-21 17:57:03 CST
Universal time: 四 2019-03-21 09:57:03 UTC
RTC time: 四 2019-03-21 09:57:03
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@nginx01 ~]# date -R
Thu, 21 Mar 2019 18:02:30 +0800
配置时区为东8区 CST(东8区)
timedatectl set-timezone Asia/Shanghai