CentOS7提供三个命令行工具,可用于配置和显示有关系统日期和时间的信息。
-
timedatectl:
Linux 7中的新增功能,也是systemd其中的一部分。 - date:系统时钟,也成为软件时钟,一旦系统启动并且系统时钟被初始化,系统时钟就完全独立硬件时钟。
- hwclock: real-time clock (RTC)通常被称为硬件时钟,(在系统集成电路板上),即使在机器关闭时也能正常工作。实时时钟可以使用UTC( Universal Time)或本地时间,建议使用UTC。
使用timedatectl
命令
显示当前日期和时间:
1 |
timedatectl
|
1 2 3 4 5 6 7 8 9 |
[root@zydev ~] # timedatectl
Local time : Mon 2017-11-06 01:22:46 CST #中部标准时间,UTC+8
Universal time : Sun 2017-11-05 17:22:46 UTC
RTC time : Sun 2017-11-05 17:22:46
Time zone: Asia /Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n /a
|
改变ntpd和chrony状态不会立即生效,需要执行:
1 |
systemctl restart systemd-timedated.service
|
改变当前时间
该命令同时更新系统时间和硬件时钟。其结果类似于使用date --set
和hwclock --systohc
命令。如果NTP
启用服务,该命令将失败。
1 2 3 4 5 6 7 8 9 10 |
[root@zydev ~] # timedatectl set-time 23:06:45
[root@zydev ~] # timedatectl
Local time : Mon 2017-11-06 23:06:51 CST
Universal time : Mon 2017-11-06 15:06:51 UTC
RTC time : Mon 2017-11-06 15:06:51
Time zone: Asia /Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n /a
|
默认情况下,系统配置硬件时钟使用UTC,如果要配置为当地时间,加上参数set-local-rtc
1 |
timedatectl set - local -rtc boolean
|
更换布尔为yes或者no,默认是no
更改当前日期
1 |
timedatectl set - time YYYY-MM-DD
|
请注意,更改日期而不指定当前时间会导致将时间设置为00:00:00。
要将当前日期更改为2017年6月2日并保持当前时间(下午11:26)
1 |
timedatectl set - time ”2017-06-02 23:26:00”
|
更改时区
列出时区
1 |
timedatectl list-timezones| grep Asia
|
更改时区为香港
1 |
timedatectl set -timezone Asia /Hong_Kong
|
使系统时钟与远程服务器同步
timedatectl
命令还允许您使用该NTP
协议启用系统时钟与一组远程服务器的自动同步。启用NTP将启用chronyd
或ntpd
服务,具体取决于它们中的哪一个被安装。
1 |
timedatectl set -ntp boolean
|
启用同步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@zydev ~] # timedatectl set-timezone Asia/Hong_Kong
[root@zydev ~] # timedatectl
Local time : Mon 2017-11-06 23:22:07 HKT
Universal time : Mon 2017-11-06 15:22:07 UTC
RTC time : Mon 2017-11-06 15:22:07
Time zone: Asia /Hong_Kong (HKT, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n /a
[root@zydev ~] # timedatectl set-ntp yes
[root@zydev ~] # timedatectl
Local time : Mon 2017-11-06 23:24:14 HKT
Universal time : Mon 2017-11-06 15:24:14 UTC
RTC time : Mon 2017-11-06 15:24:14
Time zone: Asia /Hong_Kong (HKT, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n /a
|
使用date命令
缺省情况下,date
显示本地时间。要显示在UTC的时间,运行与所述命令--utc
或-u
命令
1 2 3 4 |
[root@zydev ~] # date
Mon Nov 6 23:34:09 HKT 2017
[root@zydev ~] # date -u
Mon Nov 6 15:34:13 UTC 2017
|
可以通过在命令行上提供选项来自定义显示信息的格式: +"format"
控制序列 | 描述 |
---|---|
%H |
HH格式的小时(例如17 )。 |
%M |
MM格式的分钟(例如30 )。 |
%S |
第二个是SS格式(例如24 )。 |
%d |
DD格式的月份中的某一天(例如,16 )。 |
%m |
MM格式的月份(例如09 )。 |
%Y |
YYYY格式的年份(例如2016 )。 |
%Z |
时区缩写(例如,CEST )。 |
%F |
YYYY-MM-DD格式的完整日期(例如2016-09-16 )。这个选项等于%Y-%m-%d 。 |
%T |
全时以HH:MM:SS格式(例如,17 :30: 24)。这个选项等于%H:%M:%S
|
改变当前时间
更改时间
1 |
date -s 23:43:45
|
同时更改时间和日期
要将当前日期更改为2017年6月2日并保持当前时间(下午11:26)
1 |
date -s "2017-06-02 23:26:00"
|
更改日期而不指定当前时间会导致将时间设置为00:00:00
使用hwclock
显示硬件时钟当前时间
1 2 |
[root@app-01 ~]# hwclock
Tue 07 Nov 2017 11:42:15 AM CST -0.269798 seconds
|
将硬件时钟设置为特定日期和时间,并将硬件时钟保持为UTC
1 |
hwclock -- set --date "21 Oct 2016 21:17" --utc
|
硬件时钟与系统时间同步,并设置为UTC时间
1 |
hwclock --systohc --utc
|
硬件时钟与系统时间同步,并设置为本地时间
1 |
hwclock --systohc --localtime
|