timedatectl是用来查询和修改系统时间和配置的Linux应用程序。它是systemd 系统服务管理的一部分,并且允许你检查和修改系统时钟的配置。
参考:redhat手册部分
几个时钟的定义
- 实时时钟(real-time clock RTC or CMOS)
指定的是硬件时钟,一般是主板上的特殊电路,专用用于记录时候,有电池供电,不受服务器的开启关闭,操作系统的关闭开启影响。无法保存时间标准(UTC 或 localtime)和是否使用夏令时调节。
- 系统时钟
与硬件时间分别维护,保存了:时间、时区和夏令时设置。Linux 内核保存为自 UTC 时间 1970 年1月1日经过的秒数。初始系统时钟是从硬件时间计算得来,计算时会考虑/etc/adjtime的设置。系统启动之后,系统时钟与硬件时钟独立运行,Linux 通过时钟中断计数维护系统时钟。
因为系统时间是按 32 为整数保存的,最大只能记到 2038 年,所以 32 位 Linux 系统将在 2038 年停止工作。
- 国际统一时钟(Coordinated Universal Time or UTC)
UTC 是与时区无关的全球时间标准。尽管概念上有差别,UTC 和 GMT (格林威治时间) 是一样的。localtime 标准则依赖于当前时区。系统时间永远是UTC,在应用程序使用的时候转换为本地时间,本地时间实际就是自己的时区,包括夏令时,RTC实战可以是UTC会在本地时间,一般UTC是被支持的方式。
timedatectl 使用
- 查看命令帮助
#
timedatectl --help
timedatectl [OPTIONS...] COMMAND ...
Query or change system time and date settings.
-h --help Show this help
--version Show package version
--adjust-system-clock
Adjust system clock when changing local RTC mode
--no-pager Do not pipe output into a pager
-P --privileged Acquire privileges before execution
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
Commands:
status Show current time settings
set-time TIME Set system time
set-timezone ZONE Set system timezone
list-timezones Show known timezones
set-local-rtc BOOL Control whether RTC is in local time
set-ntp BOOL Control whether NTP is enabled
更详细的帮助信息也可以通过man timedatectl 进行查看。
查看当前设置,直接输入timedatectl等同于timedatectl status
# |
- 设置日期
# |
- 设置当前时间
# |
默认的,系统是使用UTC时间的,可以用以下命令打开和关闭UTC时间:
# |
把 boolean 替换成yes则表示使用本地时间,替换成no则表示是UTC时间
注:这里的boolean值也可以用true、flase
- 设置时区:
查看所有的时区:
# |
用以下命令设置时区:
# |
- 远程NTP服务器同步
timedatectl还可以设置是否打开NTP选项
# |