Linux时间相关命令

来源:互联网 发布:淘宝子账号怎么登入 编辑:程序博客网 时间:2024/05/22 22:07

在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便。

1.命令格式:

  date [参数]... [+格式]

2.命令功能:

date 可以用来显示或设定系统的日期与时间。

3.命令参数:

必要参数:

%H 小时(以00-23来表示)。 

%I 小时(以01-12来表示)。 

%K 小时(以0-23来表示)。 

%l 小时(以0-12来表示)。 

%M 分钟(以00-59来表示)。 

%P AM或PM。 

%r 时间(含时分秒,小时以12小时AM/PM来表示)。 

%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 

%S 秒(以本地的惯用法来表示)。 

%T 时间(含时分秒,小时以24小时制来表示)。 

%X 时间(以本地的惯用法来表示)。 

%Z 市区。 

%a 星期的缩写。 

%A 星期的完整名称。 

%b 月份英文名的缩写。 

%B 月份的完整英文名称。 

%c 日期与时间。只输入date指令也会显示同样的结果。 

%d 日期(以01-31来表示)。 

%D 日期(含年月日)。 

%j 该年中的第几天。 

%m 月份(以01-12来表示)。 

%U 该年中的周数。 

%w 该周的天数,0代表周日,1代表周一,异词类推。 

%x 日期(以本地的惯用法来表示)。 

%y 年份(以00-99来表示)。 

%Y 年份(以四位数来表示)。 

%n 在显示时,插入新的一行。 

%t 在显示时,插入tab。 

MM 月份(必要) 

DD 日期(必要) 

hh 小时(必要) 

mm 分钟(必要)

ss 秒(选择性) 

选择参数:

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。 

-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。 

-u  显示GMT。 

--help  在线帮助。 

--version  显示版本信息 

4.使用说明:

1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下: % :  打印出 %:

%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)

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"  //显示下一年的日期

5.使用实例:

实例1:显示当前时间

命令:

date

date '+%c'

date '+%D'

date '+%x'

date '+%T'

date '+%X'

输出:

[root@localhost ~]# date

2012年 12月 08日 星期六 08:31:35 CST

[root@localhost ~]# date '+%c'

2012年12月08日 星期六 08时34分44秒

[root@localhost ~]# date '+%D'

12/08/12[root@localhost ~]# date '+%x'

2012年12月08日

[root@localhost ~]# date '+%T'

08:35:36[root@localhost ~]# date '+%X'

08时35分54秒

[root@localhost ~]#

说明:

实例2:显示日期和设定时间

命令:

date --date 08:42:00

输出:

[root@localhost ~]# date '+%c'

2012年12月08日 星期六 08时41分37秒

[root@localhost ~]# date --date 08:42:00

2012年 12月 08日 星期六 08:42:00 CST

[root@localhost ~]# date '+%c' --date 08:45:00

2012年12月08日 星期六 08时45分00秒

[root@localhost ~]#

说明:

实例3:date -d参数使用

命令:

输出:

[root@localhost ~]# date -d "nov 22"

2012年 11月 22日 星期四 00:00:00 CST

[root@localhost ~]# date -d '2 weeks'

2012年 12月 22日 星期六 08:50:21 CST

[root@localhost ~]# date -d 'next monday'

2012年 12月 10日 星期一 00:00:00 CST

[root@localhost ~]#  date -d next-day +%Y%m%d

20121209[root@localhost ~]# date -d tomorrow +%Y%m%d

20121209[root@localhost ~]# date -d last-day +%Y%m%d

20121207[root@localhost ~]# date -d yesterday +%Y%m%d

20121207[root@localhost ~]# date -d last-month +%Y%m

201211[root@localhost ~]# date -d next-month +%Y%m

201301[root@localhost ~]# date -d '30 days ago' 

2012年 11月 08日 星期四 08:51:37 CST

[root@localhost ~]# date -d '-100 days' 

2012年 08月 30日 星期四 08:52:03 CST

[root@localhost ~]#  date -d 'dec 14 -2 weeks'

2012年 11月 30日 星期五 00:00:00 CST

[root@localhost ~]# date -d '50 days'

2013年 01月 27日 星期日 08:52:27 CST

说明:

date 命令的另一个扩展是 -d 选项,该选项非常有用。使用这个功能强大的选项,通过将日期作为引号括起来的参数提供,您可以快速地查明一个特定的日期。-d 选项还可以告诉您,相对于当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。通过将这个相对偏移使用引号括起来,作为 -d 选项的参数,就可以完成这项任务。

具体说明如下:

date -d "nov 22"  今年的 11 月 22 日是星期三

date -d '2 weeks' 2周后的日期

date -d 'next monday' (下周一的日期)

date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d

date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d

date -d last-month +%Y%m(上个月是几月)

date -d next-month +%Y%m(下个月是几月)

使用 ago 指令,您可以得到过去的日期:

date -d '30 days ago' (30天前的日期)

使用负数以得到相反的日期:

date -d 'dec 14 -2 weeks' (相对:dec 14这个日期的两周前的日期)

date -d '-100 days' (100天以前的日期)

date -d '50 days'(50天后的日期)

实例4:显示月份和日数

命令:

date  '+%B %d'

输出:

[root@localhost ~]# date  '+%B %d' 

十二月 08[root@localhost ~]#

说明:

实例5:显示时间后跳行,再显示目前日期 

命令:

date '+%T%n%D'

输出:

[root@localhost ~]# date '+%T%n%D'

09:00:30

12/08/12[root@localhost ~]#


上述格式不必全都记住,只需要掌握几个常用的即可。例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数,相当于time函数,%w表示一周中的第几天。实例见下:


如果要显示的时间不是当前时间,而是经过运算的时间,则可以用-d选项。例如显示三年前的时间:


看到这个命令我很受伤,过去的时间再也回不去了,只能用命令看看。显示三个月后的时间:


显示十天后的时间:


有时候需要获取当前时间距离1970年0时0分0秒所经历的秒数,保存在变量中:


2. 设置时间
用 -s选项可以设置系统时间:


方式多种多样,任你选:


你要足够相信date的智能。

修改日期:
时间设定成2009年5月10日的命令如下:
#date -s 05/10/2009

修改时间:
将系统时间设定成上午10点18分0秒的命令如下。
#date -s 10:18:00

修改时区:
找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。
修改/etc/sysconfig/clock文件的内容为:
ZONE=”Asia/Shanghai”
UTC=false
ARC=false

同步bios时间:
同步BIOS时钟,强制把系统时间写入CMOS,命令如下:
#clock -w

date命令的功能是显示和设置系统日期和时间。
输入date 查看目前系统时间。

2、hwclock/clock
语法格式:hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test] [--utc][--version][--set --date=<日期与时间>]
参数:
--adjust hwclock 每次更改硬件时钟时,都会记录在/etc/adjtime 文件中。使用--adjust 参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
--debug 显示hwclock 执行时详细的信息。
--directisa hwclock 预设从/dev/rtc 设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O 指令来存取硬件时钟。
--hctosys 将系统时钟调整为与目前的硬件时钟一致。
--set --date=<日期与时间> 设定硬件时钟。
--show 显示硬件时钟的时间与日期。
--systohc 将硬件时钟调整为与目前的系统时钟一致。
--test 仅测试程序,而不会实际更改硬件时钟。
--utc 若要使用格林威治时间,请加入此参数,hwclock 会执行转换的工作。
--version 显示版本信息。
例1:查看硬件时间
# hwclock --show
或者
# clock --show
例2:设置硬件时间
# hwclock --set --date="07/07/06 10:19" (月/日/年时:分:秒)
或者
# clock --set --date="07/07/06 10:19" (月/日/年时:分:秒)
例3:硬件时间和系统时间的同步
按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock 或clock 命令实现同步。
硬件时钟与系统时钟同步:
# hwclock --hctosys(hc 代表硬件时间,sys 代表系统时间)
或者
# clock –hctosys
例4:系统时钟和硬件时钟同步:
# hwclock --systohc
或者
# clock –systohc
例5:强制将系统时间写入CMOS,使之永久生效,避免系统重启后恢复成原时间
# clock –w
或者
# hwclock -w

3、时区的设置
# tzselect

Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 输入5,亚洲
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 输入9,中国
Please select one of the following time zone regions.
1) east China - Beijing, Guangdong, Shanghai, etc.
2) Heilongjiang
3) central China - Gansu, Guizhou, Sichuan, Yunnan, etc.
4) Tibet & most of Xinjiang Uyghur
5) southwest Xinjiang Uyghur
#? 输入1,北京时间
The following information has been given:
China
east China - Beijing, Guangdong, Shanghai, etc.
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Fri Jul 7 10:32:18 CST 2006.
Universal Time is now: Fri Jul 7 02:32:18 UTC 2006.
Is the above information OK?
1) Yes
2) No
#? 输入1,确认
如果不用tzselect 命令,可以修改文件变更时区。
# vi /etc/sysconfig/clock
Z/Shanghai(查/usr/share/zoneinfo 下面的文件)
UTC=false
ARC=false
# rm /etc/localtime
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
重新启动即可。

4、图形界面设置时区命令timeconfig

5、时间同步
例1:同步时间
# ntpdate 210.72.145.44 (210.72.145.44 是中国国家授时中心的官方服务器)
例2:定时同步时间
# crontab –e 添加脚本例子如下:
*/20 * * * * /usr/sbin/ntpdate 210.72.145.44 //每20 分钟执行一次
30 5 * * * /usr/sbin/ntpdate 210.72.145.44 //每天早晨5 点半执行
※ 前面五个*号代表五个数字,数字的取值范围和含义如下:分钟(0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6)//0 代表星期天设定完毕后,可使用# crontab –l 查看上面的设定。

0 0