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.
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):
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):
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:
timedatectl list-timezones | grep Europe
Agora defina o fuso horário em seu sistema Linux usando o comando:
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:
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
.
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:
timedatectl
Habilite o serviço NTP em seu sistema Linux com o comando:
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:
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
:
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:
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
:
sudo systemctl restart systemd-timesyncd
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Set Timezone And Enable Network Time Sync (NTP) From The Command Line Using timedatectl