timedatectl是用来查询和修改系统时间和配置的Linux应用程序。它是systemd 系统服务管理的一部分,并且允许你检查和修改系统时钟的配置。
几个时钟的定义实时时钟(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
#
timedatectl
Local time: Fri 2015-10-23 21:07:39 EDT
Universal time: Sat 2015-10-24 01:07:39 UTC
RTC time: Sat 2015-10-24 01:05:41
Timezone: America/New_York (EDT, -0400)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2015-03-08 01:59:59 EST
Sun 2015-03-08 03:00:00 EDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2015-11-01 01:59:59 EDT
Sun 2015-11-01 01:00:00 EST
设置日期
#
timedatectl set-time YYYY-MM-DD
设置当前时间
#
timedatectl set-time HH:MM:SS
默认的,系统是使用UTC时间的,可以用以下命令打开和关闭UTC时间:
#
timedatectl set-local-rtc boolean
把 boolean 替换成yes则表示使用本地时间,替换成no则表示是UTC时间
注:这里的boolean值也可以用true、flase
设置时区:
查看所有的时区:
#
timedatectl list-timezones|grep Shanghai
Asia/Shanghai
用以下命令设置时区:
#
timedatectl set-timezone Asia/Shanghai
远程NTP服务器同步
timedatectl还可以设置是否打开NTP选项
#
timedatectl set-ntp yes(or)no