七、时间管理
1、Linux时间介绍:
Linux 时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称 RTC)时钟。系统时钟
是指当前 Linux Kernel 中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在
BIOS 中进行设置。当 Linux 启动时,硬件时钟会去读取系统时钟的 设置,然后系统时钟就会独立
于硬件运作。
Linux 中的所有命令(包括函数)都是采用的系统时钟设置。在 Linux 中,用于时钟查看和
设置的命令主要有 date、hwclock 和 clock。其中,clock 和 hwclock 用法相近,只用一个就行,只不
过 clock 命令除了支持 x86 硬 件体系外,还支持 Alpha 硬件体系。
2、Linux时间设置命令
2.1、date:
语法格式:date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help]
[--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
说明:可用来设置系统日期与时间。只有管理员才有设置日期与时间的权限,一般用户只能用
date 命令显示时间。若不加任何参数,data 会显示目前的日期与时间。
例 1:显示当前系统时间
[root@Test2 ~]# date
2010 年 06 月 17 日 星期四 00:00:04 CST
例 2:设置日期和时间为 2010 年 6 月 18 号 12:00
[root@Test2 ~]# date -s "20100618 12:00:00"
2010 年 06 月 18 日 星期五 12:00:00 CST
例 3:设置日期为 2010 年年 6 月 18 号
[root@Test2 ~]# date -s 20100618
2010 年 06 月 18 日 星期五 00:00:00 CST
例 4:设置时间为 12:00:00[root@Test2 ~]# date 12:00:00
date: invalid date “12:00:00”
例 5:显示时区
[root@Test2 ~]# date -R
Thu, 17 Jun 2010 00:01:36 +0800
或者:
[root@Test2 ~]# cat /etc/sysconfig/clock
# The ZONE parameter is only evaluated by system-config-date.
# The timezone of the system is defined by the contents of /etc/localtime.
ZONE="Asia/Shanghai"
UTC=true
ARC=false
2.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
2.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
重新启动即可。
2.4、图形界面设置时区命令timeconfig
2.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 查看上面的设定。