TIMEDATECTL(1)

NAME
timedatectl - 控制系统的时间与日期

SYNOPSIS

timedatectl [OPTIONS...] {COMMAND}

描述

timedatectl 可用于查询与修改 系统时钟的各项设置。

可以使用 systemd-firstboot(1) 初始化已挂载(但未启动)的系统镜像的时区设置。

选项

能够识别的命令行选项如下：

--no-ask-password
    在执行特权操作时不向用户索要密码。

--adjust-system-clock
    当使用 set-local-rtc 命令时， 若使用了此选项， 则表示根据RTC时间来更新系统时钟。 若未使用此选项，则表示根据系统时钟来更新RTC时间。

-H, --host=
    操作指定的远程主机。可以仅指定一个主机名(hostname)， 也可以使用 "username@hostname" 格式。 hostname 后面还可以加上容器名(以冒号分隔)， 也就是形如 "hostname:container" 的格式， 以表示直接连接到指定主机的指定容器内。 操作将通过SSH协议进行，以确保安全。 可以通过 machinectl -H HOST 命令列出远程主机上的所有容器名称。

-M, --machine=
    在本地容器内执行操作。 必须明确指定容器的名称。

-h, --help
    显示简短的帮助信息并退出。

--version
    显示简短的版本信息并退出。

--no-pager
    不将程序的输出内容管道(pipe)给分页程序。

能够识别的命令如下：

status
    显示系统时钟与RTC的当前状态， 包括时区设置与网络时间同步服务的状态。 注意，所谓"网络时间同步服务的状态"实际上只是 systemd-timesyncd.service 服务的状态， 并不检查是否存在其他时间同步服务。 这是默认命令。

set-time [TIME]
    将系统时钟设为指定的时间， 并同时更新RTC时间。 [TIME] 是一个形如 "2012-10-30 18:17:16"的时间字符串。

set-timezone [TIMEZONE]
    设置系统时区，也就是更新 /etc/localtime 软连接的指向。 可以用下面的 list-timezones 命令列出所有可用时区。 如果RTC被设为本地时间， 此命令还会同时更新RTC时间。 详见 localtime(5) 手册。

list-timezones
    列出所有可用时区，每行一个。 列出的值可以用作前述 set-timezone 命令的参数。

set-local-rtc [BOOL]
    设为 "no" 表示在RTC中存储UTC时间； 设为 "yes" 表示在RTC中存储本地时间。 应该尽一切可能在RTC中存储UTC时间。 尽量不要在RTC中存储本地时间， 因为这会造成一系列麻烦， 尤其是在切换时区以及调整夏令时或冬令时的时候。 注意，除非明确使用了 --adjust-system-clock 选项， 否则此命令还会同时用系统时钟更新RTC时间。 此命令还会改变 /etc/adjtime 文件第三行的内容，详见 hwclock(8) 手册。

set-ntp [BOOL]
    是否开启网络时间同步。 设为 "yes" 则启用并启动 systemd-timesyncd.service 服务， 设为 "no" 则停止并停用它。 该命令除了控制 systemd-timesyncd.service 服务的状态，不做任何其他操作。 也就是说，设为 "yes" 相当于执行 systemctl enable --now systemd-timesyncd.service 命令； 而设为 "no" 则相当于执行 systemctl disable --now systemd-timesyncd.service 命令；

    注意，即使使用此命令关闭了 systemd-timesyncd.service 服务， 仍然有可能存在其他时间同步服务。 另外，严格来说， systemd-timesyncd.service 除了同步时间之外，还同时兼有其他功能， 例如在无网络且无RTC的系统上维持系统的"单调时钟"。 详见 systemd-timesyncd.service(8) 手册。

退出状态

返回值为 0 表示成功， 非零返回值表示失败代码。

环境变量

$SYSTEMD_PAGER
    指定分页程序。仅在未指定 --no-pager 选项时有意义。 此变量会覆盖 $PAGER 的值。 将此变量设为空字符串或 "cat" 等价于使用 --no-pager 选项。

$SYSTEMD_LESS
    用于覆盖 默认传递给 less 程序的命令行选项 ("FRSXMK")。

例子

显示当前的时间设置

    $ timedatectl
          Local time: Di 2015-04-07 16:26:56 CEST
      Universal time: Di 2015-04-07 14:26:56 UTC
            RTC time: Di 2015-04-07 14:26:56
           Time zone: Europe/Berlin (CEST, +0200)
     Network time on: yes
    NTP synchronized: yes
     RTC in local TZ: no

开启网络时间同步服务

    $ timedatectl set-ntp true
    ==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp ===
    Authentication is required to control whether network time synchronization shall be enabled.
    Authenticating as: user
    Password: ********
    ==== AUTHENTICATION COMPLETE ===

    $ systemctl status systemd-timesyncd.service
    ● systemd-timesyncd.service - Network Time Synchronization
       Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled)
       Active: active (running) since Mo 2015-03-30 14:20:38 CEST; 5s ago
         Docs: man:systemd-timesyncd.service(8)
     Main PID: 595 (systemd-timesyn)
       Status: "Using Time Server 216.239.38.15:123 (time4.google.com)."
       CGroup: /system.slice/systemd-timesyncd.service
               └─595 /usr/lib/systemd/systemd-timesyncd
    ...

参见

systemd(1), hwclock(8), date(1), localtime(5), systemctl(1), systemd-timedated.service(8), systemd-timesyncd.service(8), systemd-firstboot(1)