本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
timedatectl — 控制系统的时间与日期
timedatectl [OPTIONS...] {COMMAND}
timedatectl 可用于查询与修改 系统时钟的各项设置。
可以使用 systemd-firstboot(1) 初始化 已挂载(但未启动)的系统镜像的时区设置。
timedatectl 可以显示 systemd-timesyncd.service(8) 的当前状态。
能够识别的命令行选项如下:
--no-ask-password¶在执行特权操作时 不向用户索要密码。
--adjust-system-clock¶当使用 set-local-rtc 命令时, 若使用了此选项, 则表示根据RTC时间来更新系统时钟。 若未使用此选项, 则表示根据系统时钟来更新RTC时间。
--monitor¶与 timesync-status 命令一起使用, 表示监视 systemd-timesyncd.service(8) 的状态并不断刷新输出。可以使用 Ctrl+C 终止监视。
-a, --all¶显示全部的 systemd-timesyncd.service(8) 属性,无论这些属性是否已设置。
-p, --property=¶仅显示指定的
systemd-timesyncd.service(8)
属性。若未指定任何属性则显示全部已设置的属性。
参数必须是一个例如 "ServerName" 这样的属性名称。
可以多次使用此选项,以显示多个属性。
--value¶当使用 show-timesync 命令显示属性时,
仅显示属性的值(不显示"="与属性名称)。
-H, --host=¶操作指定的远程主机。可以仅指定一个主机名(hostname),
也可以使用 "username@hostname" 格式。
hostname 后面还可以加上
SSH监听端口(以冒号":"分隔)与容器名(以正斜线"/"分隔),
也就是形如 "hostname:port/container" 的格式,
以表示直接连接到指定主机的指定容器内。
操作将通过SSH协议进行,以确保安全。
可以通过
machinectl -H
HOST 命令列出远程主机上的所有容器名称。IPv6地址必须放在方括号([])内。
-M, --machine=¶-h, --help¶--version¶--no-pager¶不将程序的输出内容管道(pipe)给分页程序。
能够识别的命令如下:
显示系统时钟与RTC的当前状态,
包括时区设置以及网络时间同步服务(也就是
systemd-timesyncd.service)的状态。
注意,此命令并不检查是否存在其他时间同步服务。
如果没有使用任何命令,那么这是默认命令。
以机器可读格式显示与 status 一样的信息。
此命令的输出主要供程序使用,
而 status 命令的输出则是人类易读的格式。
默认不输出空属性,但可以使用 --all 选项强制输出所有属性。
可以使用 --property= 选项仅输出特定的属性。
将系统时钟设为指定的时间, 并同时更新RTC时间。 [TIME] 是一个形如 "2012-10-30 18:17:16"的时间字符串。
设置系统时区,
也就是更新 /etc/localtime 软连接的指向。
可以用下面的 list-timezones 命令列出所有可用时区。
如果RTC被设为本地时间,
此命令还会同时更新RTC时间。
详见
localtime(5)
手册。
列出所有可用时区,每行一个。 列出的值可以用作前述 set-timezone 命令的参数。
设为 "no" 表示在RTC中存储UTC时间;
设为 "yes" 表示在RTC中存储本地时间。
应该尽一切可能在RTC中存储UTC时间。
尽量不要在RTC中存储本地时间,
因为这会造成一系列麻烦,
尤其是在切换时区以及调整夏令时或冬令时的时候。
注意,
除非明确使用了
--adjust-system-clock 选项,
否则此命令还会同时用系统时钟更新RTC时间。
此命令还会改变
/etc/adjtime 文件第三行的内容,详见
hwclock(8) 手册。
接受一个布尔值,表示是否开启网络时间同步(若可用)。
设为 yes 表示启用并启动 systemd-timedated.service
中的环境变量 $SYSTEMD_TIMEDATED_NTP_SERVICES 中的第一个存在的服务。
设为 no 表示禁用并停止环境变量
$SYSTEMD_TIMEDATED_NTP_SERVICES 中的所有服务。
下面的命令专用于 systemd-timesyncd.service(8)
显示
systemd-timesyncd.service(8)
的当前状态。如果还使用了 --monitor 选项,那么表示不断监视并刷新此服务的状态。
以机器可读格式显示与 timesync-status 一样的信息。
此命令的输出主要供程序使用,
而 timesync-status 命令的输出则是人类易读的格式。
默认不输出空属性,但可以使用 --all 选项强制输出所有属性。
可以使用 --property= 选项仅输出特定的属性。
$SYSTEMD_PAGER¶指定分页程序。仅在未指定 --no-pager 选项时有意义。
此变量会覆盖 $PAGER 的值。如果 $SYSTEMD_PAGER 与 $PAGER 都未设置,
那么将会依次尝试如下常见的分页程序:
less(1),
more(1),
如果最终仍未找到分页程序,那么将不使用分页。
将此变量设为空字符串或 "cat" 等价于使用 --no-pager 选项。
$SYSTEMD_LESS¶用于覆盖默认传递给 less
程序的命令行选项("FRSXMK")。
如果 $SYSTEMD_LESS 的值不含 "K" ,
并且使用 less 作为分页程序,那么
Ctrl+C 信号将会被忽略。
这将允许 less 自己处理
Ctrl+C 信号。
$SYSTEMD_LESSCHARSET¶用于覆盖默认传递给 less 程序的字符集。
(如果终端兼容 UTF-8 ,那么默认值是 "utf-8" )
显示当前的时间设置
$ timedatectl
Local time: Thu 2017-09-21 16:08:56 CEST
Universal time: Thu 2017-09-21 14:08:56 UTC
RTC time: Thu 2017-09-21 14:08:56
Time zone: Europe/Warsaw (CEST, +0200)
System clock synchronized: yes
NTP service: active
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-timesyncd.service(8) 的当前状态
$ timedatectl timesync-status
Server: 216.239.38.15 (time4.google.com)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 1
Reference: GPS
Precision: 1us (-20)
Root distance: 335us (max: 5s)
Offset: +316us
Delay: 349us
Jitter: 0
Packet count: 1
Frequency: -8.802ppm