第3章配置日期和时间


现代操作系统有两种时钟:
RTC时钟。通常指的是硬件时钟(集成在主板上的时钟),RTC时钟完全独立于操作系统之外,关机时也会继续运行。
系统时钟,即软件时钟。由内核维护,且其初始值基于RTC时钟。一旦系统启动,系统时钟将被初始化,然后完全独立于RTC时钟。
系统时钟依赖于UTC时间,并转化为本地时间。本地时间是你当前时区的实际时间,包括夏令时。RTC时钟也可以使用UTC时间或本地时间。建议使用UTC时间。
FEDORA23提供了3个命令行工具来配置系统日期和时间:timedatectl(FEDORA23新增)、 date (传统方式)、hwclock(用于操作RTC)。
3.1 使用timedatectl命令
Timedatectl命令是作为系统SYSTEMD的一部分发布的,允许你查看和修改系统时钟的配置信息。你可以使用这个工具修改当时的日期和时间,也可以设置系统时钟与远程时间服务器时间同步。
如何以自定义的格式显示当前日期和时间,请参考3.2 date命令的使用。
3.1.1 显示当前日期和时间
显示当前日期和时间的详细信息(系统时钟和硬件时钟),用timedatectl命令。
Timedatectl
将显示本地和世界时间,当前时区,NTP的配置状态,夏令时的相关信息:
例子3.1 显示当前日期和时间
下面显示的是timedatectl的输出信息,显示当前系统没有使用NTP系统时钟同步功能:
~]$ timedatectl
Local time:
 Mon 2013-09-16 19:30:24 CEST
Universal time:
 Mon 2013-09-16 17:30:24 UTC
Timezone:
 Europe/Prague (CEST, +0200)
NTP enabled:
 no
NTP synchronized:
 no
RTC in local TZ:
 no
DST active:
 yes
Last DST change:
 DST began at
Sun 2013-03-31 01:59:59 CET
Sun  2013-03-31 03:00:00 CEST
Next DST change: DST  ends (the clock jumps one hour backwards) at
Sun  2013-10-27 02:59:59 CEST
Sun  2013-10-27 02:00:00 CET
3.1.2 修改当前时间
以root用户的身份,用以下命令修改当前时间
timedatectl set-time HH:MM:SS
用具体小时替换HH,用具体分钟替换MM,用具体秒替换SS即可。都是两位数字格式。
这个命令会更新系统时钟和硬件时钟。结果类似于date --set 和hwclock --systohc两个命令的组合。
例子3.2 改变当前时间
把当前时间改为11:26 pm,可以用以下命令:
~]# timedatectl set-time 23:26:00
系统默认为UTC时间。如果显示为本地时间,运行timedatectl并使用set-local-rtc参数(ROOT权限):
timedatectl set-local-rtc boolean
用yes(y,true,t,1都可以)配置为本地时间,如果使用UTC时间,请使用no(n,false,f,0)代替boolean即可。
3.1.3 改变当前日期
ROOT用户下用下面的命令可以修改日期:
timedatectl set-time YYYY-MM-DD
用4位年份代替YYYY,用2位月份代替MM,用2位日期代替DD。
注意:如果没有指定时间的话,将默认为00:00:00。
例子2.2 改变当前日期
把当前日期改为2013年6月2日晚上11点26分的方式如下(使用ROOT用户):
~]# timedatectl set-time "2013-06-02 23:26:00"
3.1.4 改变当前时区
用ROOT用户运行下面的命令显示可用的时区设置:
timedatectl list-timezones
改变当前的时区,用ROOT用户执行下面的命令:
timedatectl set-timezone time_zone
用timedatectl list-timezones显示出的值代替time_zone即可。
例子3.4 改变当前时区设置
用timedatectl加上list-timezones确定离你最近的时区。比如列出欧洲所有的时区:
~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
...
把时区改为Europe/Prague,ROOT执行以下命令:
~]# timedatectl set-timezone Europe/Prague
3.1.5 与远程时间服务器同步系统时间
Timedatectl命令允许你启用系统时间自动与远程时间服务器时间同步。启用NTP需要启动CHRONYD或NTPD服务
timedatectl set-ntp boolean
把boolean替换为yes(默认值)以启用同步功能,no为关闭同步功能。
例子3.5 与远程时间服务器同步系统时间
让系统自动与远程时间服务器同步的命令如下:
~]# timedatectl set-ntp yes
3.2.1使用date命令
Date工具适用于所有LINUX系统,允许你显示、配置当前日期和时间。经常以脚本的形式使用,用来显示自定义格式的系统时间。
如何修改时区和同步系统时间,请参阅3.1使用timedatectl 命令。
3.2.1 显示当前日期和时间
显示当前日期和时间,只需要运行date即可,不需要任何参数。
 date
将显示今天是星期几,本地时间,时区简称和年份。
默认情况下date显示本地时间,如果要显示UTC时间,需要增加--utc 或-u参数。
date --utc
可以增加format参数以自定义的形式显示相关信息:
date +”format”
 用下面的控制字符代替format。控制字符见表3.1 常用控制字符表。或者可以用date的手册来查询所有可用的显示格式。
表3.1 常用控制字符表
控制字符    说明
%H    HH
%M    MM
%S    SS
%d    DD
%m    MM
%Y    YYYY
%Z    时区简称,如CEST
%F    YYYY-MM-DD,如2013-09-06,等同于%Y-%m-%d
%T    HH:MM:DD,等同于%H:%m:%S

例子3.6 显示当前日期和时间
显示当前日期和时间(本地时间):
~]$ date
Mon Sep 16 17:30:24 CEST 2013
显示UTC时间:
~]$ date --utc
Mon Sep 16 15:30:34 UTC 2013
自定义显示:
~]$ date +"%Y-%m-%d %H:%M"
2013-09-16 17:30
3.2.2 改变当前时间
改变当前时间,date需要增加--set或者-s选项(ROOT用户):
date --set HH:MM:SS
HH:小时,MM:分钟,SS:秒,格式为2位数字。
默认情况下设置本地时间,如需要设置UTC时间,则需要增加--utc或-u选项:
date --set HH:MM:SS --utc
例子3.7 改变当前时间
把系统时间改为11:26 pm:
~]# date --set 23:26:00
3.2.3 改变当前日期
改变当前日期,使用date并增加--set或-s选项(root用户):
date --set YYYY-MM-DD
YYYY:4位年份,MM:2位月份,DD:2位日期。
注意,没有指定时间的话,默认为00:00:00
例子3.8 改变当前日期
把当前日期改为2013年6月2日晚上11点26分:
~]# date --set 2013-06-02 23:26:00
3.3 使用hwclock命令
Hwclock是操作系统时钟的工具,也叫RTC。硬件时钟是独立于系统时钟之外的,关机之后也在运行。这个工具用来显示系统时钟。
硬件时钟保存年、月、日、小时、分钟、秒。它不能保存时间标准:本地时间或UTC时间,也不能保存夏令时DST。
Hwclock工具的设置保存在/etc/adjtime文件里,当你第一次设置的时候创建。如:当你手工或同步系统时间时。
注意:
FEDORA6系统中,hwclock在每次关机、重启的时候自动运行。但FEDORA23已经调整为当系统时钟与NTP或PTP服务器同步后,内核将每11分钟自动同步一次。
了解NTP,请见第14章和15章。了解PTP,请见16章。关于设置硬件时钟(运行NTPDATE后),请见15.18。
3.3.1 显示当前日期和时间
用ROOT用户运行不加选项的命令即显示本地日期和时间:
Hwclock
注意:--utc -u选项对hwclock无效,这个命令总是显示本地时间,这些选项不会修改/etc/adjtime文件。请参阅hwclock手册。
例子3.9显示当前日期和时间
显示当前日期和当前的本地时间,用ROOT执行以下命令:
~]# hwclock
Tue 15 Apr 2014 04:23:46 PM CEST
 -0.329272 seconds
关于时区有相关信息,请参阅3.1.4修改时区设置。
3.3.2 设置日期和时间
除了显示日期和时间,你还可以手工设置日期和时间。
你可以增加--set --date选项来设置硬件时钟的时间。
hwclock --set --date "dd mmm yyyy HH:MM"
dd:日期,2位数字格式; mmm:月份简写,3个字母; yyyy:4位年份;  HH:2位数字格式的小时, MM:2位数字格式的分钟。
同时,你也可以设置UTC或本地时间,分别增加--utc 或--localtime选项。这种情况下,UTC或LOCAL参数将会记录到/etc/adjtime文件里。
例子3.10 设置硬件时钟
如果你想设置成一个指定的值,比如2014年10月21日,21:17,并让硬件时钟使用UTC时间,则用ROOT用户执行以下命令:
~]# hwclock --set --date "21 Oct 2014 21:17" --utc
3.3.3 同步日期和时间
你可以设置硬件时钟与系统时钟同步,或则设置系统时钟与硬件时钟同步。
硬件时钟与系统时钟同步用下面的命令:
hwclock --systohc
注意,如果你启用了NTP,而且硬件时钟与系统时钟每11分钟自动同步一次,所以这个命令只在系统刚启动初始化系统时间时才有用。
系统时钟与硬件时钟同步的命令:
hwclock --hctosys
当你同步硬件时钟和系统时钟的时候,也可以指定硬件时钟是使用UTC还是本地时间,增加--utc --localtime选项即可。
Hwclock --systohc --utc等价于timedatectl set-local-rtc false。hwclock --sysotc --local与timedatectl set-local-rtc true等价。
例子3.11 用系统时间更新硬件时间
用当前系统时间更新硬件时钟的命令:
~]# hwclock --systohc --localtime
为了避免时区和DST夏令时的切换,建议让硬件时钟采用UTC时间。例子3.11是有用的,比如带有WINDOWS的多重系统,假定硬件时钟按默认的本地时间运行,其它系统也都按本地时间运行。如果装有一个虚拟机,其虚拟的硬件时钟由主机的硬件时钟提供,这种情况下,客户可能需要重新配置成使用本地时间。
3.4 其它信息
FEDORA23配置日期和时间的其它参考信息如下:
安装文档
Timedate-手册
Date-手册
Hwclock-手册
本地化和键盘布局设置中的如何配置键盘布局。

你可能感兴趣的:(linux,fedora)