Linux 时间命令
[ 2009/02/16 21:01 | by selboo ]
Linux中的时间和时区
格林威治时间(GMT Greenwich Mean Time)是我们常提到的, 它也就是0时区时间. 但是我们在计算机中经常看到的是UTC. 它是Universal Time Coordinated的简写. 虽然可以认为UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC.假如现在中国当地的时间是晚上8点的话,我们可以有下面两种表示方式:20:00 CST和12:00 UTC,这里的CST是Chinese Standard Time,也就是我们通常所说的北京时间了. 因为中国处在UTC+8时区,依次类推那么也就是12:00 UTC了.时区的另一个概念问题请看:http://bldmickey.blog.sohu.com/52743243.html
设置Linux Time Zone
在Linux下glibc提供了我们事先编译好的许多timezone文件, 他们就放在/usr/share/zoneinfo这个目录下。
设置时区的方式:
[root@localhost ~]# ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime
修改/etc/sysconfig/clock文件,例如:
[root@localhost ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false
设置TZ环境变量的值
TZ的值可以有多种格式,最简单的设置方法就是使用tzselect命令,或者设置TZ环境变量
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
[root@localhost ~] #date
Thu Sep 20 17:40:08 CST 2007
修改系统时间
语法:date -s "dd/mm/yyyy hh:mm:ss"例如:
date -s 20090216 设置成2009年2月16日,这样会把具体时间设置成空00:00:00
date -s 20:04:12 设置具体时间,不会对日期做更改
date -s "20:04:12 2007-09-09" 这样可以设置全部时间
Linux中的RTC和系统时钟
在一台计算机上我们有两个时钟:一个称之为硬件时间时钟(RTC),还有一个称之为系统时钟(System Clock)。硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因。系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了。在一些虚拟机中经常会出现RTC和系统时钟不同步的情况。
[root@localhost ~]# hwclock -r [root@localhost ~] #读取当前硬件时间时钟(RTC),
Thu 20 Sep 2007 05:51:53 PM CST -0.445215 seconds
[root@localhost ~]# hwclock -w
[root@localhost ~]# hwclock -w or hwclock --systohc将系统时钟同步到RTC
设置Linux NTP Client
[root@localhost ~] # crontab -e
转换时间为时间戳
[root@localhost ~]# date +%s -d "20090216" 只填写日期.默认会把时间设置成00:00:00
1234713600
[root@localhost ~]# date +%s -d "20090216 19:54:19"
1234785259
转换时间戳为时间
[root@localhost ~]# date -d '19700101 UTC 1234713600 seconds'
2009年 02月 16日 星期一 00:00:00 CST
[root@localhost ~]# date -d '19700101 UTC 1234785259 seconds'
2009年 02月 16日 星期一 19:54:19 CST
格林威治时间(GMT Greenwich Mean Time)是我们常提到的, 它也就是0时区时间. 但是我们在计算机中经常看到的是UTC. 它是Universal Time Coordinated的简写. 虽然可以认为UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC.假如现在中国当地的时间是晚上8点的话,我们可以有下面两种表示方式:20:00 CST和12:00 UTC,这里的CST是Chinese Standard Time,也就是我们通常所说的北京时间了. 因为中国处在UTC+8时区,依次类推那么也就是12:00 UTC了.时区的另一个概念问题请看:http://bldmickey.blog.sohu.com/52743243.html
设置Linux Time Zone
在Linux下glibc提供了我们事先编译好的许多timezone文件, 他们就放在/usr/share/zoneinfo这个目录下。
设置时区的方式:
[root@localhost ~]# ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime
修改/etc/sysconfig/clock文件,例如:
[root@localhost ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false
设置TZ环境变量的值
TZ的值可以有多种格式,最简单的设置方法就是使用tzselect命令,或者设置TZ环境变量
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
[root@localhost ~] #date
Thu Sep 20 17:40:08 CST 2007
修改系统时间
语法:date -s "dd/mm/yyyy hh:mm:ss"例如:
date -s 20090216 设置成2009年2月16日,这样会把具体时间设置成空00:00:00
date -s 20:04:12 设置具体时间,不会对日期做更改
date -s "20:04:12 2007-09-09" 这样可以设置全部时间
Linux中的RTC和系统时钟
在一台计算机上我们有两个时钟:一个称之为硬件时间时钟(RTC),还有一个称之为系统时钟(System Clock)。硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因。系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了。在一些虚拟机中经常会出现RTC和系统时钟不同步的情况。
[root@localhost ~]# hwclock -r [root@localhost ~] #读取当前硬件时间时钟(RTC),
Thu 20 Sep 2007 05:51:53 PM CST -0.445215 seconds
[root@localhost ~]# hwclock -w
[root@localhost ~]# hwclock -w or hwclock --systohc将系统时钟同步到RTC
设置Linux NTP Client
[root@localhost ~] # crontab -e
转换时间为时间戳
[root@localhost ~]# date +%s -d "20090216" 只填写日期.默认会把时间设置成00:00:00
1234713600
[root@localhost ~]# date +%s -d "20090216 19:54:19"
1234785259
转换时间戳为时间
[root@localhost ~]# date -d '19700101 UTC 1234713600 seconds'
2009年 02月 16日 星期一 00:00:00 CST
[root@localhost ~]# date -d '19700101 UTC 1234785259 seconds'
2009年 02月 16日 星期一 19:54:19 CST
linux date命令
[ 2009/01/31 23:44 | by selboo ]
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
说明 :
date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
时间方面 :
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%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)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
参数 :
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
例子 :
显示时间后跳行,再显示目前日期 :
date '+%T%n%D'
显示月份与日数 :
date '+%B %d'
显示日期与设定时间(12:34:56) :
date --date '12:34:56'
注意 :
当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
说明 :
date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
时间方面 :
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%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)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
参数 :
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
例子 :
显示时间后跳行,再显示目前日期 :
date '+%T%n%D'
显示月份与日数 :
date '+%B %d'
显示日期与设定时间(12:34:56) :
date --date '12:34:56'
注意 :
当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。