Blog Linux Avante

Como definir fuso horário e habilitar Network Time Sync (NTP) na linha de comando usando timedatectl

19 de julho de 2019

Este artigo explica como usar timedatectl para alterar o fuso horário e habilitar a sincronização automática do relógio do sistema com um servidor remoto usando o NTP (Network Time Protocol) no Linux.

timedatectl é um utilitário de linha de comando disponível como parte do systemd que permite alterar várias configurações do relógio do sistema.

Como alterar o fuso horário no Linux usando timedatectl

Antes de alterar seu fuso horário, comece usando timedatectl para descobrir o fuso horário atualmente definido (também mostra outras informações sobre as configurações de hora do sistema):

Comandos para usar no terminal

timedatectl

É o mesmo que timedatectl status.

Exemplo com saída:

$ timedatectl
                      Local time: Fri 2019-07-19 13:23:38 IST
                  Universal time: Fri 2019-07-19 12:23:38 UTC
                        RTC time: Fri 2019-07-19 12:23:38
                       Time zone: Europe/Dublin (IST, +0100)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

Agora vamos listar todos os fusos horários disponíveis, para que você saiba o nome exato do fuso horário que usará em seu sistema (necessário para o comando que altera o fuso horário):

Comandos para usar no terminal

timedatectl list-timezones

A lista de fusos horários é bastante grande. Você pode filtrá-lo para mostrar apenas os fusos horários de um continente ou da capital de um país/estado, usando grep, por exemplo, para mostrar apenas os fusos horários da Europa possíveis:

Comandos para usar no terminal

timedatectl list-timezones | grep Europe

Agora defina o fuso horário em seu sistema Linux usando o comando:

Comandos para usar no terminal

timedatectl set-timezone

Onde <timezone> é um fuso horário listado por timedatectl list-timezones. Por exemplo, defina o fuso horário do sistema Linux para America/Lost_Angeles com:

Comandos para usar no terminal

timedatectl set-timezone America/Los_Angeles

Este comando cria um link simbólico para o fuso horário escolhido de /usr/share/zoneinfo/ a /etc/localtime. Você também pode criar esse link manualmente e obter o mesmo resultado. Usando o mesmo exemplo, para definir o fuso horário para America/Los_Angeles, /etc/localtime precisa ser um link simbólico para /usr/share/zoneinfo/America/Los_Angeles.

Como sincronizar o relógio do sistema com um servidor remoto (habilitar NTP) usando timedatectl

Comece usando timedatectl para descobrir se o serviço de sincronização de horário da rede (NTP) está ativo e o relógio do sistema sincronizado:

Comandos para usar no terminal

timedatectl

Habilite o serviço NTP em seu sistema Linux com o comando:

Comandos para usar no terminal

timedatectl set-ntp true

Se você quiser desativá-lo, basta usar false em vez de true.

É importante notar que este comando falha se um serviço NTP não estiver instalado, por exemplo, timesyncd, ntpd, Chrony ou outros. O timesyncd deve ser instalado por padrão em muitos casos (por exemplo, é instalado por padrão com o Ubuntu 16.04 e mais recente).

Se estiver usando um serviço como chrony ou ntpd para fazer alterações, elas não serão mostradas por timedatectl até que systemd-timedated seja reiniciado:

Comandos para usar no terminal

sudo systemctl restart systemd-timedated

Em um servidor Ubuntu 18.04 também tive que reiniciar systemd-timesyncd (mas isso não era necessário em meus sistemas Ubuntu 19.04 ou Solus OS, por exemplo), ou então a hora do sistema não seria sincronizada. Caso você também esteja usando timesyncd e timedatectl mostre System clock synchronized: como no, embora NTP service seja mostrado como active, reinicie systemd-timesyncd:

Comandos para usar no terminal

sudo systemctl restart systemd-timesyncd

Devo também acrescentar que, ao usar o serviço padrão systemd timesyncd, você pode ver mais algumas informações do que as fornecidas por timedatectl, como o servidor de horário NTP usado, e um registro mostrando a última vez que a sincronização foi realizada, com:

Comandos para usar no terminal

systemctl status systemd-timesyncd

Exemplo com saída:

$ systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendo
   Active: active (running) since Fri 2019-07-19 13:28:49 IST; 11min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 2232 (systemd-timesyn)
   Status: "Synchronized to time server 91.189.94.4:123 (ntp.ubuntu.com)."
    Tasks: 2 (limit: 3159)
   CGroup: /system.slice/systemd-timesyncd.service
           └─2232 /lib/systemd/systemd-timesyncd

Jul 19 13:28:49 logix22 systemd[1]: Starting Network Time Synchronization...
Jul 19 13:28:49 logix22 systemd[1]: Started Network Time Synchronization.
Jul 19 13:28:48 logix22 systemd-timesyncd[2232]: Synchronized to time server 91.

No systemd 239 e mais recente (por exemplo, não funcionará no Ubuntu 18.04, porque usa o systemd 237), você pode mostrar o status do systemd-timesyncd usando timedatectl show-timesync:

$ timedatectl show-timesync
SystemNTPServers=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org
FallbackNTPServers=ntp.ubuntu.com
ServerName=0.pool.ntp.org
ServerAddress=194.102.58.173
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=1min 4s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-23, RootDelay=22.003ms, RootDispersion=21.194ms, Reference=C102015C, OriginateTimestamp=Fri 2019-07-19 13:59:53 IST, ReceiveTimestamp=Fri 2019-07-19 13:59:53 IST, TransmitTimestamp=Fri 2019-07-19 13:59:53 IST, DestinationTimestamp=Fri 2019-07-19 13:59:53 IST, Ignored=no PacketCount=1, Jitter=0 }
Frequency=1647689

E as propriedades systemd-timesyncd usando timedatectl timesync-status:

$ timedatectl timesync-status
       Server: 194.102.58.173 (0.pool.ntp.org)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C102015C
    Precision: 1us (-23)
Root distance: 32.195ms (max: 5s)
       Offset: +3.652ms
        Delay: 2.903ms
       Jitter: 0
 Packet count: 1
    Frequency: +25.142ppm

Você pode alterar as configurações mostradas aqui editando o arquivo de configuração /etc/systemd/timesyncd.conf. Por exemplo. para alterar os servidores NTP (você pode usar os servidores fornecidos pelo NTP Pool Project), descomente a linha NTP e adicione os servidores que deseja usar separados por um espaço. Depois de alterar o arquivo de configuração, reinicie systemd-timesyncd:

Comandos para usar no terminal

sudo systemctl restart systemd-timesyncd

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.
Propaganda