Centos Linux下使用date/clock/hwclock命令设置系统和硬件时间

Linux 2051 0 2013-06-16

Centos Linux下使用date/clock/hwclock命令设置系统和硬件时间
博客迁移之后,没有注意新服务器的系统时间,今天突然感觉到不对,于是调了一下:
一共两步可以实现:
(1)date -s
(2)clock -w
第一步的意思是设置时间,设置完了可以用date命令查看对不对…注意是月日时分年
第二步的意思是写入主板的rtc芯片..
第一部分设置系统时间:

下面介绍一下我参考的文档和一些命令:
Linux下使用date命令来查看和设置时间是相当方便的,本文就详细介绍date的用法。

该命令的一般格式为:
1 date [选项] 显示时间格式(设置时以+开头,后面接格式)

date 设置时间格式命令中各选项的含义分别为:
1 -d datestr, --date datestr 显示由datestr描述的日期
2 -s datestr, --set datestr 设置datestr 描述的日期
3 -u, --universal 显示或设置通用时间

时间域列表:
01 % H 小时(00..23)
02 % I 小时(01..12)
03 % k 小时(0..23)
04 % l 小时(1..12)
05 % M 分(00..59)
06 % p 显示出AM或PM
07 % r 时间(hh:mm:ss AM或PM),12小时
08 % s 从1970年1月1日00:00:00到目前经历的秒数
09 % S 秒(00..59)
10 % T 时间(24小时制)(hh:mm:ss)
11 % X 显示时间的格式(%H:%M:%S)
12 % Z 时区 日期域
13 % a 星期几的简称( Sun..Sat)
14 % A 星期几的全称( Sunday..Saturday)
15 % b 月的简称(Jan..Dec)
16 % B 月的全称(January..December)
17 % c 日期和时间( Mon Nov 8 14:12:46 CST 1999)
18 % d 一个月的第几天(01..31)
19 % D 日期(mm/dd/yy)
20 % h 和%b选项相同
21 % j 一年的第几天(001..366)
22 % m 月(01..12)
23 % w 一个星期的第几天(0代表星期天)
24 % W 一年的第几个星期(00..53,星期一为第一天)
25 % x 显示日期的格式(mm/dd/yy)
26 % y 年的最后两个数字( 1999则是99)
27 % Y 年(例如:1970,1996等)

注意:只有超级用户才有权限使用date命令设置时间,一般用户只能使用date命令显示时间。

一些常用使用例子:
1. 显示日期和时间
在字符界面下,除了可以显示年月之外,用户还可以使用“date”命令的功能是显示和设置系统日期和时间。需要特别说明的是,只有超级用户才能用“date”命令设置时间,一般用户只能用“date”命令显示时间。

1. 用指定的格式显示时间,命令如下:
1 [root@hexuweb101 ~]$ date '+The date of today is:%x ,it is:%X '
2                                  #The date of today is:06/18/2010 ,it is:12:27:33 PM

其中% x 显示日期的格式(mm/dd/yy),% X 显示时间的格式(%H:%M:%S)。
其它参数可查看上面的date时间域的设置。

2. 设置日期和时间, -s是设置日期的参数。

1. 设置时间为2010年06月17日,命令如下:
1 [root@hexuweb101 ~]$ date -s 06/17/2010
2                                #Thu Jun 17 00:00:00 CST 2010

2. 设置时间为12点07分33秒,命令如下:
1 [root@hexuweb101 ~]$ date -s 12:07:33
2                                #Thu Jun 17 12:07:33 CST 2010

另外,“date”命令还有许多有用的参数,能够帮助用户随心所欲地设定和显示时间,例如%H显示小时(00..23)、%M显示分(00..59)、%p显示出AM或PM、%S显示秒(00..59)和%Z显示时区等。

注意,上面说的是系统时间,是linux由操作系统维护的。

3. 如果要确保修改生效可以执行如下命令:
1 [root@hexuweb101 ~]$ clock -w

clock 命令的参数 -w 强制把系统时间写入CMOS。
第二部分是设置主板CMOS时间:

在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。
为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。
由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。

1.使用 hwclock或clock命令查看和设置硬件时钟
查看硬件时钟的操作:
1 [root@hexuweb101 ~]$ hwclock --show


1 [root@hexuweb101 ~]$ clock --show #### 我的系统Centos5.3,使用的此命令。
2 Thu 17 Jun 2010 01:31:58 PM CST  -0.409750 seconds

设置硬件时钟的操作:
1 [root@hexuweb101 ~]$  hwclock --set --date="06/17/2010 13:26:00"

或者
1 [root@hexuweb101 ~]$  clock --set --date="06/17/2010 13:26:00" #### 我的系统Centos5.3,使用的此命令。

通用的设置格式:hwclock/clock –set –date=“月/日/年 时:分:秒”。

2.同步系统时钟和硬件时钟

Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock 命令来同步系统时钟和硬件时钟。

硬件时钟与系统时钟同步:
1 [root@hexuweb101 ~]$ hwclock --hctosys

或者
1 [root@hexuweb101 ~]$ clock --hctosys #### 我的系统Centos5.3,使用的此命令。

上面命令中,–hctosys表示Hardware Clock to SYStem clock。

系统时钟和硬件时钟同步:
1 [root@hexuweb101 ~]$ hwclock --systohc

或者
1 [root@hexuweb101 ~]$ clock --systohc #### 我的系统Centos5.3,使用的此命令。

### 补充 ##############################
设置服务器时区:
01 ## check CST Timezone
02 [root@hexuweb101 ~]$date
03 [root@hexuweb101 ~]$#Fri Nov  4 07:15:00 CST 2011
04  
05 ## 开始设置 UTC Timezone
06 [root@hexuweb101 ~]$cd /etc/
07 [root@hexuweb101 ~]$mv localtime localtime.bak
08 [root@hexuweb101 ~]$ln -s /usr/share/zoneinfo/UTC /etc/localtime
09  
10 ##check
11 [root@hexuweb101 ~]$date
12 [root@hexuweb101 ~]$#Fri, 04 Nov 2011 07:27:26 +0000

上一篇:linux设置时间为24小时制,设置时区

下一篇:linux终端下修改文件名及文件内容的命令

讨论数量:1

天涯网魂 3 杠 5 星2013-06-16 12:23:45

Linux命令学习 - 显示设置时间 - date

概要:

date命令的功能是显示和设置系统日期和时间

命令格式:

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

参数:

-d STRING:显示由 STRING 描述的日期
-s STRING: 设置由 STRING 描述的日期

%Y 年(例如:1970,2009等)
%y 年的最后两个数字(1988则是88)
%m 月(01..12)
%d 一个月的第几天(01..31)
%H 小时(00..23)
%I 小时(01..12)
%k 小时(0..23)
%l 小时(1..12)
%p 显示出AM或PM
%M 分(00..59)
%S 秒(00..59)

%r 时间(hh:mm:ss AM或PM),12小时
%T 时间(24小时制)(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%x 显示日期的格式(mm/dd/yy)
%D 日期(mm/dd/yy)
%s 从1970年1月1日00:00:00到目前经历的秒数

常用的就这些,剩下的直接查man就好了...

例子:

1、今天中午有个时间很特别,2009-08 07 12:34:56,用下面这个格式就可以显示出12/34/56/7/8/9这种格式。其中"-"可以忽略首位的"0"。

date +'%I/%M/%S/%-d/%-m/%-y'

2、设置年月日为20090807,时间为00:00

date -s 20090807

3、设置时间,不改变日期

date -s  16:02:23

4、设置日期及时间

date -s "20090807 16:02:23"

5、查看100天又5小时前的具体时间

date -d "-1 day 5 hour" +"%Y-%m-%d %H:%M:%S"

6、查看100分钟后的时间

date -d "+100 min" +"%Y-%m-%d %H:%M:%S"

7、计算时间戳

date -d 20090528 +%s

8、还原时间戳

date -d "1970-01-01 1243440000 sec GMT" +"%F %T"

9、利用NTP协议在线更新系统时间

ntpdate 210.72.145.44

请先登录再发表讨论。 2024-03-29

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链