timedatectl 命令
timedatectl 实用程序是 systemd 系统和服务管理器的一部分。
要显示本地、通用和 RTC 时间和时区、NTP 配置和 DST 信息:
# timedatectl Local time: Tue 2016-09-13 20:30:26 IST Universal time: Tue 2016-09-13 15:00:26 UTC RTC time: Tue 2016-09-13 15:00:26 Time zone: Asia/Kolkata (IST, +0530) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
使用以下语法更改日期和时间:
# timedatectl set-time [YYYY-MM-DD] # timedatectl set-time [HH:MM:SS]
使用以下语法更改时区:
# timedatectl set-timezone [time_zone]
列出可用的时区:
# timedatectl list-timezones Africa/Abidjan Africa/Accra Africa/Addis_Ababa
通过 NTP 启用时钟同步:
# timedatectl set-ntp yes
使用 chrony 配置 NTP
Chrony 是一套实用程序,它提供了另一种 NTP 实现。
Chrony 专为经常断电或者与网络断开连接的移动系统和虚拟机而设计。
未永久连接到网络的系统需要相对较长的时间来使用 NTP 守护程序 ntpd 调整其系统时钟。
Chrony 由 chronyd(一个在用户空间中运行的守护进程)和 chronyc(一个用于对 chronyd 进行调整的命令行程序)组成。
chronyd 守护进程对内核中运行的系统时钟进行调整。
当网络访问可用时,它使用 NTP 与另一个系统同步。
当网络无法访问时,chronyd 使用存储在漂移文件中的最后计算的漂移来同步系统时间。
RHEL 7 有 3 个命令行实用程序来配置系统日期和时间:
- date
- hwclock
- timedatectl
使用 NTP
NTP 提供了一种通过将计算机与另一个系统同步来验证和更正计算机时间的方法。
安装 NTP:
# yum install ntp
默认情况下,NTP 配置文件 /etc/ntp.conf 中有四个公共服务器条目,它们由 server 指令指定。
# grep server /etc/ntp.conf server 0.rhel.pool.ntp.org server 1.rhel.pool.ntp.org server 2.rhel.pool.ntp.org server 3.rhel.pool.ntp.org
我们可以在 /etc/ntpd.conf 文件中指定本地参考服务器,而不是使用预定义的公共服务器。
例如:
# vi /etc/ntpd.conf server 192.0.2.1
配置文件中的另一个指令是driftfile。
默认设置如下:
driftfile /var/lib/ntp/drift
此漂移文件包含一个值,用于在每次系统或者服务启动后调整系统时钟频率。
其他 NTP 实用程序
使用 ntpq 命令查询 NTP 守护程序操作并确定性能。
使用 -p 选项(或者 peers 命令)显示服务器已知的对等点列表及其状态摘要。
例如:
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *10.10.0.2 192.168.2.11 2 u 911 1024 377 1.274 0.147 0.355 +10.10.0.3 192.168.2.11 2 u 1026 1024 377 1.161 0.073 0.852
- 表示系统已与 10.10.0.2 服务器同步。
使用 ntpstat 命令显示网络时间同步状态。
# ntpstat synchronised to NTP server (10.10.0.2) at stratum 3 time correct to within 31 ms polling server every 1024 s
日期命令
使用 date 命令可以显示或者设置系统日期和时间。
运行不带参数的 date 命令以显示当前日期和时间:
# date Mon Sep 12 19:41:40 IST 2016
date 命令提供了多种输出格式选项。
我们还可以在未来或者过去的时间和日期。
下面举几个例子。
- 显示星期几:
# date +%A Monday
- 一年后显示日期:
# date -d "1 year" Mon Sep 12 19:47:49 IST 2017
- 显示过去 1 个月的日期:
# date -d "1 month ago" Mon Aug 12 19:49:07 IST 2016
使用以下语法更改当前日期。
用四位数年份代替 YYYY,用两位数月份代替 MM,用月份中的两位数日期代替 DD。
# date +%D -s [YYYY-MM-DD]
使用以下语法更改当前时间。
用两位数的小时代替 HH,用两位数的分钟代替 MM,用两位数的秒代替 SS。
包括上午或者下午。
如果系统时钟设置为使用 UTC,请包括 -u 选项。
# date +%T%p -s [HH:MM:SS]AM|PM -u
hwclock 命令
使用 hwclock 命令查询和设置硬件时钟,也称为 RTC(实时时钟)。
该时钟独立于 CPU 中运行的任何控制程序运行,甚至在机器断电时也是如此。
hwclock 命令允许我们:
- 显示当前时间
- 将硬件时钟设置为指定时间
- 从硬件时钟 (hwclock -s ) 设置系统时间
- 将硬件时钟设置为当前系统时间 (hwclock -w )
NTP 守护进程
ntpd 程序是用户空间守护进程,它将系统时钟与远程 NTP 时间服务器或者本地参考时钟同步。
守护进程在系统启动或者服务重新启动时读取配置文件。
我们还需要在防火墙中为 NTP 数据包打开 UDP 端口 123.
编辑 /etc/ntp.conf 文件后,使用 systemctl 命令启动 NTP 守护进程:
# systemctl start ntpd
使用以下命令确保 NTP 守护程序在引导时启动:
# systemctl enable ntpd