Chrony Linux Installation and Usage | Mastering Time Sync

Command center scene with technicians setting up Chrony on Linux highlighted by time synchronization icons

Keeping accurate time on Linux servers at IOFLOOD is crucial for automating system operations. From our testing, we have found the Chrony command to be a useful tool for time synchronization. In today’s article, we’ll talk about this command in detail, in order to empower our bare metal cloud server customers and fellow developers with the knowledge and tools to effectively manage time with Chrony on Linux.

In this tutorial, we will guide you on how to install the chrony command on your Linux system. We will show you methods for both APT and YUM-based distributions, delve into compiling chrony from source, installing a specific version, and finally, how to use the chrony command and ensure it’s installed correctly.

So, let’s dive in and begin installing chrony on your Linux system!

TL;DR: How Do I Install and Use the ‘Chrony’ Command in Linux?

In most Linux distributions, you can install ‘chrony’ by running the command sudo apt-get install chrony for Debian-based distributions like Ubuntu, or sudo yum install chrony for RPM-based distributions like CentOS. To use ‘chrony’, you can run the command chronyc tracking to check the synchronization status.

# For Debian-based distributions like Ubuntu
sudo apt-get install chrony

# For RPM-based distributions like CentOS
sudo yum install chrony

# To use 'chrony'
chronyc tracking

# Output:
# Reference ID    : 123.456.789.012 (server.example.com)
# Stratum         : 2
# Ref time (UTC)  : Tue Apr 12 11:22:33 2022
# System time     : 0.000000011 seconds slow of NTP time
# Last offset     : +0.000000002 seconds
# RMS offset      : 0.000000002 seconds
# Frequency       : 36.042 ppm fast
# Residual freq   : +0.000 ppm
# Skew            : 0.001 ppm
# Root delay      : 0.042 seconds
# Root dispersion : 0.001 seconds
# Update interval : 1032.1 seconds
# Leap status     : Normal

This is a basic way to install and use the ‘chrony’ command in Linux, but there’s much more to learn about ‘chrony’. Continue reading for more detailed information and advanced usage scenarios.

Linux Install Methods of ‘Chrony’

Chrony is a versatile and powerful tool for managing and synchronizing the system time in Linux. It’s especially useful for systems which have intermittent internet connections, virtual machines, and systems that don’t run continuously.

Installing Chrony with APT

If you’re using a Debian-based distribution like Ubuntu, you can install chrony using the apt package manager. Here’s how you can do it:

sudo apt update
sudo apt install chrony

After running these commands, your system will update the package list to ensure it has the latest versions, and then it will install chrony.

Installing Chrony with YUM

For RPM-based distributions like CentOS, you will use the yum package manager to install chrony. The process is similar to the apt process:

sudo yum update
sudo yum install chrony

This set of commands will update your system’s package list and then install chrony.

Verifying the Installation

After installing chrony, you should verify that it’s installed correctly. You can do this by checking the version of chrony installed on your system:

chronyd -v

# Output:
# chronyd version 3.5

This command will display the version of chrony you’ve installed, confirming that the installation process was successful.

Installing Chrony from Source Code

Sometimes, you might need to compile chrony from its source code. This could be due to a variety of reasons such as the need for a specific version or the desire to customize the build process.

Here’s how to install chrony from source:

# Download the source code
wget https://download.tuxfamily.org/chrony/chrony-4.0.tar.gz

# Extract the tarball
 tar xvf chrony-4.0.tar.gz

# Change to the chrony directory
 cd chrony-4.0/

# Configure the source
./configure

# Compile the source code
make

# Install chrony
sudo make install

This sequence of commands downloads the source code, extracts it, configures the build process, compiles the source code, and finally installs chrony.

Installing Different Versions of Chrony

There could be several reasons you might need to install a specific version of chrony. Different versions may have unique features, bug fixes, or compatibility with certain systems.

From Source Code

To install a specific version from source, you simply need to download the tarball for that version. For example, to install version 3.5, you would replace chrony-4.0.tar.gz in the above commands with chrony-3.5.tar.gz.

Using Package Managers

With package managers like apt or yum, you can also specify the version of chrony you want to install.

APT

sudo apt install chrony=3.5

YUM

sudo yum install chrony-3.5

These commands will install version 3.5 of chrony on your system.

Key Changes and Features

Different versions of chrony come with different features and improvements. Here’s a comparison of a few versions:

VersionKey Changes
4.0Improved NTP client, better leap second handling
3.5Added support for hardware timestamping
3.4Improved the accuracy of the system clock

Basic Usage of Chrony

After installing chrony, you can use the chronyc command to interact with the chronyd daemon. For example, you can check the servers chrony is synchronizing with using the sources command:

chronyc sources

# Output:
# 210 Number of sources = 4
# MS Name/IP address         Stratum Poll Reach LastRx Last sample
# ===============================================================================
# ^* time.cloudflare.com           3   6   377    36  -1582us[-1582us] +/-   18ms
# ^+ time.cloudflare.com           3   6   377    35  -1595us[-1595us] +/-   18ms
# ^+ time.cloudflare.com           3   6   377    37  -1608us[-1608us] +/-   18ms
# ^+ time.cloudflare.com           3   6   377    37  -1621us[-1621us] +/-   18ms

This output shows that chrony is synchronizing with four servers, all provided by Cloudflare.

Verifying the Installation

You can verify that chrony is running and synchronizing correctly by using the tracking command:

chronyc tracking

# Output:
# Reference ID    : 123.456.789.012 (server.example.com)
# Stratum         : 2
# Ref time (UTC)  : Tue Apr 12 11:22:33 2022
# System time     : 0.000000011 seconds slow of NTP time
# Last offset     : +0.000000002 seconds
# RMS offset      : 0.000000002 seconds
# Frequency       : 36.042 ppm fast
# Residual freq   : +0.000 ppm
# Skew            : 0.001 ppm
# Root delay      : 0.042 seconds
# Root dispersion : 0.001 seconds
# Update interval : 1032.1 seconds
# Leap status     : Normal

This output provides detailed information about the synchronization status of your system.

Other Time Synchronization Methods

While chrony is a powerful tool for time synchronization, it’s not the only option available. Another popular tool is the ntp (Network Time Protocol) command. It’s been around for a longer time and is widely used in many systems.

Installing NTP

Installing ntp is similar to installing chrony. Here’s how you can install it on APT and YUM-based distributions:

# For Debian-based distributions like Ubuntu
sudo apt install ntp

# For RPM-based distributions like CentOS
sudo yum install ntp

This will install the ntp package on your system.

Using NTP

To synchronize your system time using ntp, you can use the ntpd daemon. To start the ntpd daemon, you can use the following command:

sudo systemctl start ntpd

You can check the status of the ntpd daemon using this command:

systemctl status ntpd

# Output:
# ● ntpd.service - Network Time Service
#    Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
#    Active: active (running) since Tue 2022-04-12 11:22:33 UTC; 1h 30min ago

This output shows that the ntpd daemon is running.

Comparing Chrony and NTP

While both chrony and ntp are powerful tools for time synchronization, they have their own strengths and weaknesses.

FeatureChronyNTP
Ease of UseChrony is easier to use and configure.NTP has a steeper learning curve.
Resource UsageChrony uses less CPU and memory.NTP uses more resources.
PrecisionChrony offers better precision and faster synchronization.NTP’s synchronization is slower and less precise.

Based on these differences, you can choose the tool that best suits your needs. If you need a tool that’s easy to use and efficient, chrony would be the better choice. If you’re working with older systems that only support ntp, or if you need a feature that’s only available in ntp, then ntp would be the better choice.

Troubleshooting Issues with Chrony

While chrony is a robust tool, you may encounter issues during installation or usage. Let’s discuss some common problems and their solutions.

Issue 1: Chrony Service Not Starting

Sometimes, the chrony service may not start after installation. You can check the status of the chrony service using the following command:

systemctl status chronyd

# Output:
# ● chronyd.service - NTP client/server
#    Loaded: loaded (/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
#    Active: inactive (dead)

If the Active field shows inactive (dead), the chrony service isn’t running. You can start it with the following command:

sudo systemctl start chronyd

Issue 2: Chrony Not Synchronizing with the Server

Another common issue is chrony not synchronizing with the server. This can occur due to network issues or incorrect server configuration. You can check the synchronization status with the chronyc tracking command. If the Leap status field shows Not synchronised, you’re not synchronizing with the server.

To resolve this, you can try changing the server or checking your network connection.

Issue 3: Chrony Installation Fails

Sometimes, the installation process might fail due to issues like package conflicts or outdated package lists. If you’re unable to install chrony using your package manager, you can try installing it from source as discussed in the Advanced Use section.

Remember, chrony is a powerful tool, but like any tool, it requires proper configuration and usage. If you’re encountering issues, don’t hesitate to refer to the chrony man pages or seek help from Linux communities online.

Linux Time Synchronization Explained

Before diving into the practical aspects of using chrony, it’s crucial to understand the concept of time synchronization in Linux. At its core, time synchronization is the process of coordinating system time across all devices in a network to a standard reference, usually an atomic clock.

The Importance of Accurate System Time

Accurate system time is critical for many operations in a Linux system. It’s particularly vital for:

  • Log Management: Log entries are timestamped. Accurate timekeeping ensures that events are logged correctly, making it easier to track activities and troubleshoot issues.

  • Security: Many security protocols rely on timestamping for functions like session management and event tracking. Inaccurate system time can lead to security vulnerabilities.

  • Data Consistency: In distributed systems, data consistency can depend on timestamping. Accurate timekeeping can prevent issues like data corruption or loss.

How Does Chrony Help?

Chrony is a versatile tool for managing time synchronization in Linux. It consists of chronyd, a daemon that runs in the background, and chronyc, a command-line interface for managing chronyd.

Chronyd obtains accurate time from external sources, like time servers or GPS systems, and smoothly adjusts the system clock. It also determines the rate at which the clock gains or loses time, compensating for this drift to maintain accurate timekeeping.

Chronyc allows you to monitor chronyd‘s performance, manually change the system clock, or command chronyd to perform various tasks. For instance, you can use chronyc to check the servers chrony is synchronizing with:

chronyc sources

# Output:
# 210 Number of sources = 4
# MS Name/IP address         Stratum Poll Reach LastRx Last sample
# ===============================================================================
# ^* time.cloudflare.com           3   6   377    36  -1582us[-1582us] +/-   18ms
# ^+ time.cloudflare.com           3   6   377    35  -1595us[-1595us] +/-   18ms
# ^+ time.cloudflare.com           3   6   377    37  -1608us[-1608us] +/-   18ms
# ^+ time.cloudflare.com           3   6   377    37  -1621us[-1621us] +/-   18ms

This command provides a list of time servers chrony is currently using for synchronization, along with detailed information about each server.

By understanding the fundamentals of time synchronization in Linux and how chrony operates, you can better manage and troubleshoot your system’s timekeeping.

Practical Uses of Time Synchronization

Time synchronization, while seemingly a small detail, plays a vital role in system administration and network management. It ensures that all devices in a network operate on the same timeline, preventing inconsistencies and errors that could arise from time discrepancies.

Time Synchronization in Network Management

In network management, time synchronization is crucial for coordinating tasks and maintaining order. For instance, in a distributed system, tasks need to be executed in a certain sequence, and time synchronization ensures this order is maintained.

Exploring Related Concepts

Beyond chrony and time synchronization, there are other related concepts that you might find interesting. These include time zones and daylight saving time, both of which can affect timekeeping in your system.

Time Zones

Time zones are regions of the earth that have the same standard time. In Linux, you can set the system time zone using the timedatectl command. This command can display the current time zone, list available time zones, and set the system time zone.

# Display the current time zone
sudo timedatectl status

# Output:
#               Local time: Tue 2022-04-12 14:54:23 PDT
#           Universal time: Tue 2022-04-12 21:54:23 UTC
#                 RTC time: Tue 2022-04-12 21:54:23
#                Time zone: America/Los_Angeles (PDT, -0700)

This command shows the current system time, universal time, RTC time, and time zone.

Daylight Saving Time

Daylight saving time (DST) is the practice of setting the clock ahead by one hour during warmer months, extending evening daylight. Linux systems automatically adjust for DST based on their time zone settings.

Further Resources for Mastering Linux Time Synchronization

To deepen your understanding of time synchronization in Linux, here are a few resources you might find helpful:

By understanding the broader context of time synchronization and related concepts, you can better manage and troubleshoot your Linux system’s timekeeping.

Recap: Beginner’s Guide to Chrony

In this comprehensive guide, we’ve explored the ins and outs of the ‘chrony’ command, a powerful tool for time synchronization in Linux. We’ve learned how to install and use this command to keep our system time accurate and in sync with external time servers.

We began with the basics, understanding what ‘chrony’ is and how to install it in Linux. We then delved into more advanced topics, such as installing ‘chrony’ from source, using different versions, and exploring its key features. We also tackled common issues you might face when using ‘chrony’, such as service startup problems and synchronization issues, providing you with solutions to overcome these challenges.

We also looked at alternative approaches to time synchronization, comparing ‘chrony’ with the ‘ntp’ command. Here’s a quick comparison of these methods:

MethodEase of UsePrecisionResource Usage
ChronyHighHighLow
NTPModerateModerateModerate

Whether you’re just starting out with ‘chrony’ or you’re looking to level up your time synchronization skills, we hope this guide has given you a deeper understanding of ‘chrony’ and its capabilities.

With its balance of ease of use, precision, and low resource usage, ‘chrony’ is a powerful tool for time synchronization in Linux. Now, you’re well equipped to keep your system time accurate and synchronized. Happy timekeeping!