博客迁移之后,没有注意新服务器的系统时间,今天突然感觉到不对,于是调了一下: 一共两步可以实现: (1)date -s
(2)clock -w
第一步的意思是设置时间,设置完了可以用date命令查看对不对…注意是月日时分年 第二步的意思是写入主板的rtc芯片.. 第一部分设置系统时间: 下面介绍一下我参考的文档和一些命令: Linux下使用date命令来查看和设置时间是相当方便的,本文就详细介绍date的用法。 该命令的一般格式为:
date [选项] 显示时间格式(设置时以+开头,后面接格式)date 设置时间格式命令中各选项的含义分别为:
-d datestr, --date datestr 显示由datestr描述的日期 -s datestr, --set datestr 设置datestr 描述的日期 -u, --universal 显示或设置通用时间时间域列表:
% H 小时(00..23) % I 小时(01..12) % k 小时(0..23) % l 小时(1..12) % M 分(00..59) % p 显示出AM或PM % r 时间(hh:mm:ss AM或PM),12小时 % s 从1970年1月1日00:00:00到目前经历的秒数 % S 秒(00..59) % T 时间(24小时制)(hh:mm:ss) % X 显示时间的格式(%H:%M:%S) % Z 时区 日期域 % a 星期几的简称( Sun..Sat) % A 星期几的全称( Sunday..Saturday) % b 月的简称(Jan..Dec) % B 月的全称(January..December) % c 日期和时间( Mon Nov 8 14:12:46 CST 1999) % d 一个月的第几天(01..31) % D 日期(mm/dd/yy) % h 和%b选项相同 % j 一年的第几天(001..366) % m 月(01..12) % w 一个星期的第几天(0代表星期天) % W 一年的第几个星期(00..53,星期一为第一天) % x 显示日期的格式(mm/dd/yy) % y 年的最后两个数字( 1999则是99) % Y 年(例如:1970,1996等)注意:只有超级用户才有权限使用date命令设置时间,一般用户只能使用date命令显示时间。 一些常用使用例子:
一、 显示日期和时间
在字符界面下,除了可以显示年月之外,用户还可以使用“date”命令的功能是显示和设置系统日期和时间。需要特别说明的是,只有超级用户才能用“date”命令设置时间,一般用户只能用“date”命令显示时间。 1. 用指定的格式显示时间,命令如下:[root@piaoyun ~]$ date '+The date of today is:%x ,it is:%X ' #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日,命令如下:
[root@piaoyun ~]$ date -s 06/17/2010 #Thu Jun 17 00:00:00 CST 20102. 设置时间为12点07分33秒,命令如下:
[root@piaoyun ~]$ date -s 12:07:33 #Thu Jun 17 12:07:33 CST 2010另外,“date”命令还有许多有用的参数,能够帮助用户随心所欲地设定和显示时间,例如%H显示小时(00..23)、%M显示分(00..59)、%p显示出AM或PM、%S显示秒(00..59)和%Z显示时区等。 注意,上面说的是系统时间,是linux由操作系统维护的。 3. 如果要确保修改生效可以执行如下命令:
[root@piaoyun ~]$ clock -w
二、设置主板CMOS时间
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。 为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。 由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。 1.使用 hwclock或clock命令查看和设置硬件时钟 查看硬件时钟的操作:[root@piaoyun ~]$ hwclock --show或
[root@piaoyun ~]$ clock --show #### 我的系统Centos5.3,使用的此命令。 Thu 17 Jun 2010 01:31:58 PM CST -0.409750 seconds设置硬件时钟的操作:
[root@piaoyun ~]$ hwclock --set --date="06/17/2010 13:26:00"或者
[root@piaoyun ~]$ clock --set --date="06/17/2010 13:26:00" #### 我的系统Centos5.3,使用的此命令。通用的设置格式:hwclock/clock –set –date=“月/日/年 时:分:秒”。 2.同步系统时钟和硬件时钟 Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock 命令来同步系统时钟和硬件时钟。 硬件时钟与系统时钟同步:
[root@piaoyun ~]$ hwclock --hctosys或者
[root@piaoyun ~]$ clock --hctosys #### 我的系统Centos5.3,使用的此命令。上面命令中,–hctosys表示Hardware Clock to SYStem clock。 系统时钟和硬件时钟同步:
[root@piaoyun ~]$ hwclock --systohc或者
[root@piaoyun ~]$ clock --systohc #### 我的系统Centos5.3,使用的此命令。### 补充 ############################## 设置服务器时区:
## check CST Timezone [root@piaoyun ~]$date [root@piaoyun ~]$#Fri Nov 4 07:15:00 CST 2011 ## 开始设置 UTC Timezone [root@piaoyun ~]$cd /etc/ [root@piaoyun ~]$mv localtime localtime.bak [root@piaoyun ~]$ln -s /usr/share/zoneinfo/UTC /etc/localtime ##check [root@piaoyun ~]$date [root@piaoyun ~]$#Fri, 04 Nov 2011 07:27:26 +0000
1.部分使用例子[root@piaoyun ~]# date -d today +"%Y-%m-%d"
2008-05-07
[root@piaoyun ~]# date -d today +"%Y_%-m_%-d" 2008_5_7
[root@piaoyun ~]# date -d today +"%Y-%m-%d %T" 2008-05-07 14:55:19
[root@piaoyun ~]# date -d today +"%Y-%m-%d %H:%M" 2008-05-07 14:55
[root@piaoyun ~]# date -d today +"%Y-%m-%d %H:%M:%S" 2008-05-07 14:55:57
date命令本身提供了日期的加减运算 非常方便。例如:得到昨天的时间 date +%Y%m%d --date="-1 day"
2.在设定时间方面date -s //设置当前时间,只有root权限才能设置,其他只能查看。 date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00 date -s 01:01:01 //设置具体时间,不会对日期做更改 date -s “01:01:01 2008-05-23″ //这样可以设置全部时间 date -s “01:01:01 20080523″ //这样可以设置全部时间 date -s “2008-05-23 01:01:01″ //这样可以设置全部时间 date -s “20080523 01:01:01″ //这样可以设置全部时间
3.加减date +%Y%m%d //显示前天年月日 date +%Y%m%d --date="+1 day" //显示前一天的日期 date +%Y%m%d --date="-1 day" //显示后一天的日期 date +%Y%m%d --date="-1 month" //显示上一月的日期 date +%Y%m%d --date="+1 month" //显示下一月的日期 date +%Y%m%d --date="-1 year" //显示前一年的日期 date +%Y%m%d --date="+1 year" //显示下一年的日期