systemd-timesyncd

Related articles
systemd-networkd
systemd
System time
From the
systemd mailing list
:
systemd-timesyncd
is a daemon that has been added for synchronizing the system clock across the network. It implements an SNTP client. In contrast to NTP implementations such as
chrony
or the NTP reference server this only implements a client side, and does not bother with the full NTP complexity, focusing only on querying time from one remote server and synchronizing the local clock to it. Unless you intend to serve NTP to networked clients or want to connect to local hardware clocks this simple NTP client should be more than appropriate for most installations. The daemon runs with minimal privileges, and has been hooked up with networkd to only operate when network connectivity is available. The daemon saves the current clock to disk every time a new NTP sync has been acquired (and every 60 seconds), and uses this to possibly correct the system clock early at bootup, in order to accommodate for systems that lack an RTC such as the Raspberry Pi and embedded devices, and make sure that time monotonically progresses on these systems, even if it is not always correct. To make use of this daemon a new system user and group "systemd-timesync" needs to be created on installation of systemd.
Configuration
When starting,
systemd-timesyncd
will read the configuration file from
/etc/systemd/timesyncd.conf
, which looks like this:
/etc/systemd/timesyncd.conf
[Time]
#NTP=
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
#...
To add
time servers
or change the provided ones, uncomment the relevant line and list their host name or IP separated by a space. Alternatively, you can use a configuration snippet in
/etc/systemd/timesyncd.conf.d/*.conf
, see
timesyncd.conf(5)
.
For example, you can use any servers provided by
the NTP pool project
or use
the default Arch ones
(also provided by the NTP pool project):
/etc/systemd/timesyncd.conf or /etc/systemd/timesyncd.conf.d/local.conf
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org
To verify your configuration:
$ timedatectl show-timesync --all
LinkNTPServers=
SystemNTPServers=
FallbackNTPServers=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
ServerName=0.arch.pool.ntp.org
ServerAddress=103.47.76.177
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=1min 4s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-21, RootDelay=177.398ms, RootDispersion=142.196ms, Reference=C342F10A, OriginateTimestamp=Mon 2018-07-16 13:53:43 +08, ReceiveTimestamp=Mon 2018-07-16 13:53:43 +08, TransmitTimestamp=Mon 2018-07-16 13:53:43 +08, DestinationTimestamp=Mon 2018-07-16 13:53:43 +08, Ignored=no PacketCount=1, Jitter=0 }
Frequency=22520548
Further to the daemon configuration, NTP servers may also be provided via a
systemd-networkd
.network
file with a
NTP=
option or, dynamically, via a DHCP server (when the
UseNTP
option is enabled in the
[DHCPv4]
or
[DHCPv6]
section).
The NTP server to be used will be determined using the following rules:
Any per-interface NTP servers obtained from
systemd-networkd.service(8)
configuration or via DHCP take precedence.
The NTP servers defined in
/etc/systemd/timesyncd.conf
will be appended to the per-interface list at runtime and the daemon will contact the servers in turn until one is found that responds.
If no NTP server information is acquired after completing those steps, the NTP server host names or IP addresses defined in
FallbackNTP=
will be used.
Note
The service writes to a local file
/var/lib/systemd/timesync/clock
with every synchronization and every 60 seconds. This location is hard-coded and cannot be changed.
This writing may be problematic for running off read-only root partition or trying to minimize writes to an SD card.
The number of writes can be minimized with a configuration like
PollIntervalMinSec=1d
and
SaveIntervalSec=infinity
.
Usage
Enable and start
To enable and start it, simply run:
# timedatectl set-ntp true
Alternatively (e.g. when running in chroot),
start/enable
systemd-timesyncd.service
.
Check service
The synchronization process might be noticeably slow. This is expected, one should wait a while before determining there is a problem. To check the service status, use:
$ timedatectl status
Local time: Thu 2015-07-09 18:21:33 CEST
           Universal time: Thu 2015-07-09 16:21:33 UTC
                 RTC time: Thu 2015-07-09 16:21:33
                Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
Check verbose
To see verbose service information, use:
$ timedatectl timesync-status
Server: 103.47.76.177 (0.arch.pool.ntp.org)
Poll interval: 2min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C342F10A
    Precision: 1us (-21)
Root distance: 231.856ms (max: 5s)
       Offset: -19.428ms
        Delay: 36.717ms
       Jitter: 7.343ms
 Packet count: 2
    Frequency: +267.747ppm
View non default config
To see the non default configuration options set and files from which those options are being derived, use:
$ systemd-analyze cat-config systemd/timesyncd.conf --tldr
# /etc/systemd/timesyncd.conf
[Time]

# /etc/systemd/timesyncd.conf.d/local.conf
[Time]
NTP=0.nl.pool.ntp.org 1.nl.pool.ntp.org 2.nl.pool.ntp.org 3.nl.pool.ntp.org
RootDistanceMaxSec=0.1
PollIntervalMinSec=1d
PollIntervalMaxSec=4w
SaveIntervalSec=infinity
View log
To view the last 24 hours of logged events, use:
# journalctl -u systemd-timesyncd --no-hostname --since "1 day ago"
Jan 19 15:14:20 systemd[1]: Stopping Network Time Synchronization...
Jan 19 15:14:20 systemd[1]: systemd-timesyncd.service: Deactivated successfully.
Jan 19 15:14:20 systemd[1]: Stopped Network Time Synchronization.
Jan 19 15:14:20 systemd[1]: Starting Network Time Synchronization...
Jan 19 15:14:20 systemd[1]: Started Network Time Synchronization.
Jan 19 15:14:20 systemd-timesyncd[1023]: Contacted time server 178.215.228.24:123 (0.nl.pool.ntp.org).
Jan 19 15:14:20 systemd-timesyncd[1023]: Initial clock synchronization to Fri 2024-01-19 15:14:20.393865 CET.
See also
Forum: systemd-timesyncd is not syncing time
Forum: Using systemd-timesync instead of NTP
Source code of timesyncd
systemd-timesyncd(8)
timesyncd.conf(5)