如何使用timedatectl从命令行设置时区并启用网络时间同步(NTP)

本文介绍了如何使用timedatectl更改时区,以及如何使用Linux上的NTP(网络时间协议)与远程服务器自动同步系统时钟。
timedatectl是systemd的一部分,可作为命令行实用程序使用,它允许更改系统时钟的各种设置。

如何使用timedatectl在Linux上更改时区

在更改时区之前,请先使用timedatectl查找当前设置的时区(还显示有关系统时间设置的其他信息):
timedatectl

这与相同timedatectl status。

输出示例:

# timedatectl
               Local time: Sat 2020-09-12 19:14:59 CST
           Universal time: Sat 2020-09-12 11:14:59 UTC
                 RTC time: Sat 2020-09-12 11:14:59    
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no                         
              NTP service: inactive                   
          RTC in local TZ: no

现在,让我们列出所有可用的时区,以便您知道将在系统上使用的时区的确切名称(更改时区的命令所需要):
timedatectl list-timezones

时区列表很大。您可以使用grep对其进行过滤,使其仅显示某个洲或某个国家/州的首都的时区,例如仅显示可能的欧洲时区:
timedatectl list-timezones | grep Shanghai

Asia/Shanghai

现在,使用以下命令在Linux****系统上设置时区:

timedatectl set-timezone

所列出的时区 在哪里timedatectl list-timezones?例如,将Linux系统时区设置为Asia/Shanghai:

timedatectl set-timezone Asia/Shanghai

该命令为您从/usr/share/zoneinfo/到选择的时区创建符号链接/etc/localtime。您也可以手动创建此链接并实现相同的目的。在同一示例中,要将时区设置为Asia/Shanghai,/etc/localtime需要是的符号链接/usr/share/zoneinfo/Asia/Shanghai。

如何使用timedatectl将系统时钟与远程服务器同步(启用NTP)

首先使用timedatectl查找网络时间同步(NTP)服务是否处于活动状态,以及系统时钟是否已同步:
timedatectl

使用以下命令在Linux系统上启用NTP服务:

timedatectl set-ntp true

如果要禁用它,只需使用false代替true。

值得注意的是,如果未安装NTP服务,例如timesyncd,ntpd,Chrony或其他服务,此命令将失败。不过,在许多情况下,timesyncd应该默认安装(例如,默认情况下是在Ubuntu 16.04及更高版本中安装的)。

如果使用chrony或ntpd之类的服务进行更改,systemd-timedated则在重新启动之前,timedatectl不会显示这些内容:

systemctl restart systemd-timedated

在Ubuntu 18.04服务器上,我还必须重新启动systemd-timesyncd(例如,在我的Ubuntu 19.04或Solus OS系统上不需要此操作),否则系统时间将无法同步。如果您还使用timesyncd,并且timedatectl显示System clock synchronized:为no,即使NTP service显示为active,也可以重新启动systemd-timesyncd:

systemctl restart systemd-timesyncd

我还应该补充一点,当使用默认的systemd timesyncd服务时,您可以看到比timedatectl提供的更多信息,例如使用的NTP时间服务器,以及显示上一次执行同步的日志,其中包括:

systemctl status systemd-timesyncd

输出示例:

systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; disable>
     Active: active (running) since Sat 2020-09-12 19:21:43 CST; 4s ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 3518 (systemd-timesyn)
     Status: "Initial synchronization to time server 5.79.108.34:123 (0.opensus>
      Tasks: 2 (limit: 4915)
     Memory: 1.5M
     CGroup: /system.slice/systemd-timesyncd.service
             └─3518 /usr/lib/systemd/systemd-timesyncd

Sep 12 19:21:42 localhost systemd[1]: Starting Network Time Synchronization...
Sep 12 19:21:43 localhost systemd[1]: Started Network Time Synchronization.
Sep 12 19:21:43 localhost systemd-timesyncd[3518]: Initial synchronization to t

在systemd 239及更高版本上(例如,它在Ubuntu 18.04上不起作用,因为它使用systemd 237),您可以使用以下命令显示systemd-timesyncd状态timedatectl show-timesync:

timedatectl show-timesync
FallbackNTPServers=0.opensuse.pool.ntp.org 1.opensuse.pool.ntp.org 2.opensuse.pool.ntp.org 3.opensuse.pool.ntp.org
ServerName=0.opensuse.pool.ntp.org
ServerAddress=5.79.108.34
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=1min 4s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-24, RootDelay=17.211ms, RootDispersion=80.734ms, Reference=8285010A, OriginateTimestamp=Sat 2020-09-12 19:22:15 CST, ReceiveTimestamp=Sat 2020-09-12 19:22:15 CST, TransmitTimestamp=Sat 2020-09-12 19:22:15 CST, DestinationTimestamp=Sat 2020-09-12 19:22:16 CST, Ignored=no PacketCount=2, Jitter=3.787ms }
Frequency=-6368726

和属性systemd-timesyncd使用timedatectl timesync-status:

timedatectl timesync-status
       Server: 5.79.108.34 (0.opensuse.pool.ntp.org)
Poll interval: 1min 4s (min: 32s; max 34min 8s)     
         Leap: normal                               
      Version: 4                                    
      Stratum: 2                                    
    Reference: 8285010A                             
    Precision: 1us (-24)                            
Root distance: 89.339ms (max: 5s)                   
       Offset: -10.021ms                            
        Delay: 358.105ms                            
       Jitter: 3.787ms                              
 Packet count: 2                                    
    Frequency: -97.179ppm

您可以通过编辑/etc/systemd/timesyncd.conf配置文件来更改此处显示的设置。例如,更改NTP服务器(您可以使用NTP Pool Project提供的服务器),取消NTP行注释,并添加要使用的服务器,并以空格分隔。更改配置文件后,重新启动systemd-timesyncd:

systemctl restart systemd-timesyncd

转自:https://blog.csdn.net/allway2/article/details/108552461

posted @ 2022-11-09 22:04  MasonLee  阅读(1816)  评论(0编辑  收藏  举报