timedatectl: controllare la sincronizzazione dell'ora del server Linux e impostare il fuso orario
timedatectl è un comando di systemd che mostra e modifica l'orologio di sistema, il fuso orario e lo stato della sincronizzazione dell'ora tramite NTP di un server Linux. Dal controllo della sincronizzazione su un server AlmaLinux 9 che usa chrony e su un server Debian 12 che usa ntpsec è risultato che entrambi i server avevano l'orologio sincronizzato, ma la riga NTP service mostrava active su uno e n/a sull'altro.
Gli output qui sotto sono i risultati dei comandi eseguiti sui due server. Sono stati sostituiti con valori di esempio solo i nomi host, gli indirizzi IP e i numeri di versione dei pacchetti, e i comandi che cambiano l'ora o il fuso orario non sono stati eseguiti sul server in produzione.
1️⃣ Uso di timedatectl e controllo dell'ora del server Linux
Eseguire timedatectl senza opzioni dà lo stesso risultato che aggiungere status. L'ora dell'orologio di sistema e dell'orologio hardware (RTC), il fuso orario e lo stato della sincronizzazione sono riuniti in un'unica schermata. Ecco il risultato sul server Debian 12.
timedatectl Local time: Wed 2026-10-28 19:49:57 UTC
Universal time: Wed 2026-10-28 19:49:57 UTC
RTC time: Wed 2026-10-28 19:49:57
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: n/a
RTC in local TZ: noIl fuso orario del server Debian 12 è Etc/UTC, quindi Local time e Universal time mostravano la stessa ora. Cosa indica ogni riga e i risultati dei due server sono nella tabella qui sotto.
| Riga di output | Cosa mostra | Risultati dei due server e cosa controllare |
|---|---|---|
| Local time | Ora attuale dell'orologio di sistema con il fuso orario applicato | Cambiando fuso orario, solo questa riga e l'output di date passano al nuovo fuso |
| Universal time | La stessa ora espressa in UTC | Non cambia con il fuso orario – sul server Debian 12 (Etc/UTC) coincide con Local time |
| RTC time | Ora dell'orologio hardware (RTC) | Mostrata senza fuso orario – ora UTC se RTC in local TZ è no |
| Time zone | Fuso orario impostato, la sua sigla e la differenza da UTC | Per cambiarlo, usa un nome dall'elenco di list-timezones |
| System clock synchronized | Se il kernel considera l'orologio sincronizzato | yes su entrambi i server – se è no, controlla prima il server di riferimento con chronyc tracking o ntpq -p |
| NTP service | Se è in esecuzione il servizio di sincronizzazione che timedatectl attiva e disattiva | active su AlmaLinux 9 (chrony), n/a su Debian 12 (ntpsec) – n/a significa che timedatectl non conosce il servizio, quindi controllalo con systemctl |
| RTC in local TZ | Se l'orologio hardware è tenuto sull'ora locale (no = UTC) | no su entrambi i server – il comando per passare da yes a UTC è set-local-rtc 0 |
Linux ha due orologi. L'orologio di sistema è quello che il kernel mantiene dopo l'avvio, e l'orologio hardware è l'orologio della scheda madre che conserva l'ora anche a server spento.
L'orologio hardware si legge direttamente con hwclock. hwclock mostra l'ora convertita nel fuso orario attuale. Sul server AlmaLinux, la lettura con TZ=UTC davanti al comando ha restituito un'ora UTC che termina con +00:00.
TZ=UTC hwclock --show2026-10-28 19:53:33.006788+00:00Sul server Debian 12, a cui ci si era collegati con un account normale, lo stesso comando è terminato senza poter accedere all'orologio hardware.
/usr/sbin/hwclock --showhwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.La riga RTC in local TZ è la stessa impostazione della terza riga del file /etc/adjtime. Sul server AlmaLinux la terza riga era UTC, cioè l'orologio hardware è tenuto in UTC.
cat /etc/adjtime0.0 0 0.0
0
UTCPer leggere i valori in uno script, usa show invece di status. Sul server Debian 12 mostra le stesse informazioni nella forma nome=valore, una per riga.
timedatectl showTimezone=Etc/UTC
LocalRTC=no
CanNTP=no
NTP=no
NTPSynchronized=yes
TimeUSec=Wed 2026-10-28 19:49:57 UTC
RTCTimeUSec=Wed 2026-10-28 19:49:57 UTCScegli le proprietà con -p e aggiungi --value per tenere solo i valori, senza i nomi. Usa questa forma per estrarre solo il nome del fuso orario.
timedatectl show -p Timezone --valueEtc/UTC🔲 Simulatore del comando timedatectl
Nel simulatore qui sotto puoi digitare tu stesso i comandi per vedere l'ora, elencare i fusi orari, cambiare il fuso orario e controllare la sincronizzazione con chronyc.
2️⃣ Stato della sincronizzazione dell'ora del server Linux
La riga System clock synchronized indica se il kernel considera l'orologio sincronizzato, e la riga NTP service indica se è in esecuzione il servizio di sincronizzazione che timedatectl può attivare e disattivare. Con show gli stessi valori compaiono come NTPSynchronized e NTP, e CanNTP indica se esiste un servizio di sincronizzazione che si può attivare e disattivare.
Sul server AlmaLinux 9 con chrony, tutti e tre i valori erano yes.
timedatectl show -p CanNTP -p NTP -p NTPSynchronizedCanNTP=yes
NTP=yes
NTPSynchronized=yesSul server Debian 12, che regola l'ora con ntpsec, solo NTPSynchronized era yes, mentre CanNTP e NTP erano no. Per questo la riga NTP service risultava n/a nella schermata status di questo server.
timedatectl show -p CanNTP -p NTP -p NTPSynchronizedCanNTP=no
NTP=no
NTPSynchronized=yesIl servizio ntpsec in sé era in esecuzione.
systemctl is-active ntpsecactiveGli unici servizi di sincronizzazione che timedatectl conosce sono quelli scritti nei file di elenco della cartella ntp-units.d, e i pacchetti della distribuzione mettono questi file in /usr/lib/systemd/ntp-units.d/ (secondo il manuale ufficiale). Il server AlmaLinux 9 aveva un file di elenco installato dal pacchetto chrony, con una sola riga: chronyd.service.
cat /usr/lib/systemd/ntp-units.d/50-chronyd.listchronyd.servicerpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.listchrony-4.8-10.el9.x86_64Il server Debian 12 non aveva questa cartella. Poiché ntpsec non è nell'elenco, timedatectl sapeva che l'orologio era sincronizzato, ma non poteva attivare né disattivare quel servizio.
ls /usr/lib/systemd/ntp-units.d/ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory3️⃣ Controllare la sincronizzazione dell'ora con chronyc
Su un server con chrony, il server orario che l'orologio segue si controlla con chronyc. sources mostra i server orari che chronyd interroga e il loro stato, uno per riga.
chronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 192.0.2.10 2 10 377 943 +272us[ +275us] +/- 55ms
^- ntp1.example.com 2 10 377 80 -28us[ -32us] +/- 3655us
^- 198.51.100.33 3 10 257 384 -151us[ -156us] +/- 97ms
^- 198.51.100.82 3 10 177 532 +157us[ +149us] +/- 45ms
^* 192.0.2.123 3 4 377 2 -21us[ -23us] +/- 312usIl ^ iniziale indica un server orario, un * come secondo carattere indica il server di riferimento che l'orologio segue ora, e - indica un candidato escluso dal calcolo. Poll 4 sul server di riferimento significa un'interrogazione ogni 16 secondi (2 alla quarta), e Reach 377 indica che sono arrivate tutte le ultime otto risposte.
tracking mostra di quanto l'orologio di sistema si discosta dall'ora del server di riferimento.
chronyc trackingReference ID : C000027B (192.0.2.123)
Stratum : 4
Ref time (UTC) : Wed Oct 28 19:50:21 2026
System time : 0.000002422 seconds slow of NTP time
Last offset : -0.000002098 seconds
RMS offset : 0.000000981 seconds
Frequency : 6.348 ppm slow
Residual freq : -0.001 ppm
Skew : 0.017 ppm
Root delay : 0.000300815 seconds
Root dispersion : 0.000150780 seconds
Update interval : 16.3 seconds
Leap status : NormalLa riga System time mostra che l'orologio di sistema era indietro di 0.000002422 secondi rispetto all'ora NTP, e Leap status era Normal. Un Update interval di 16.3 secondi è l'intervallo tra gli ultimi due aggiornamenti dell'orologio.
Quali server interrogare lo stabiliscono le righe pool e server in /etc/chrony.conf. Lasciando solo le righe di impostazione, senza commenti e righe vuote, si ottiene quanto segue.
grep -v "^#" /etc/chrony.conf | grep -v "^$"pool 2.almalinux.pool.ntp.org iburst
sourcedir /run/chrony-dhcp
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
server 192.0.2.123 prefer iburst minpoll 4 maxpoll 4La riga pool interroga il pool NTP di AlmaLinux, e prefer nell'ultima riga server è un'opzione che fa scegliere a chronyd questo server prima degli altri. makestep 1.0 3 è un'impostazione che, nei primi tre aggiornamenti dopo l'avvio di chronyd, corregge in un colpo un orologio sfasato di oltre 1 secondo e poi lo regola poco a poco facendolo andare leggermente più veloce o più lento. rtcsync fa copiare al kernel l'ora di sistema nell'orologio hardware ogni 11 minuti (secondo la documentazione ufficiale).
Sul server Debian 12 con ntpsec, le stesse informazioni sono state controllate con ntpq -p. Il * iniziale è il server di riferimento, e tutti e tre i server venivano interrogati ogni 1024 secondi.
ntpq -p remote refid st t when poll reach delay offset jitter
===============================================================================
+203.0.113.43 198.51.100.28 2 u 835 1024 377 184.6893 -0.1018 1.4879
+203.0.113.44 198.51.100.27 2 u 547 1024 377 183.0827 -2.4227 4.0957
*ntp2.example.co 198.51.100.40 2 u 440 1024 377 177.4670 -0.5814 1.70704️⃣ Cambiare il fuso orario con timedatectl
I nomi dei fusi orari si vedono con list-timezones. La maggior parte ha la forma Continente/Città, uno per riga, ed entrambi i server ne avevano 598.
timedatectl list-timezones | head -5Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmaratimedatectl list-timezones | wc -l598L'elenco è lungo, quindi filtralo con grep quando cerchi un nome.
timedatectl list-timezones | grep -i new_yorkAmerica/New_YorkIl fuso orario si cambia scrivendo un nome dell'elenco dopo set-timezone. Questo comando sostituisce il link /etc/localtime con il nuovo file del fuso orario, quindi da un account normale va eseguito con sudo.
sudo timedatectl set-timezone America/New_YorkControlla con ls -l se /etc/localtime è un link a un file di fuso orario.
ls -l /etc/localtimelrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTCUn nome non presente nell'elenco è stato rifiutato subito, prima di cambiare il fuso orario.
timedatectl set-timezone Mars/OlympusFailed to set time zone: Invalid or not installed time zone 'Mars/Olympus'Cambiare fuso orario non modifica l'ora dell'orologio di sistema; solo Local time e l'output del comando date compaiono nel nuovo fuso. Su un server con l'orologio hardware in UTC, anche l'orologio hardware non cambia (secondo il manuale ufficiale).
5️⃣ Attivare NTP e impostare l'ora a mano con timedatectl
set-ntp true avvia il primo servizio dell'elenco dei servizi di sincronizzazione e lo abilita all'avvio. false ferma i servizi dell'elenco e li disabilita all'avvio (secondo il manuale ufficiale).
sudo timedatectl set-ntp trueSul server Debian 12 senza file di elenco, il comando è terminato con NTP not supported persino con false, il valore attuale. Un servizio non presente nell'elenco, come ntpsec, si avvia e si ferma direttamente con systemctl.
timedatectl set-ntp falseFailed to set ntp: NTP not supportedPer impostare l'ora a mano, scrivi la data e l'ora dopo set-time. Questo comando regola l'orologio hardware insieme all'orologio di sistema.
sudo timedatectl set-time '2026-10-28 20:00:00'Sul server Debian 12, l'inserimento di un valore nel formato sbagliato è terminato con un errore senza cambiare l'ora.
timedatectl set-time badFailed to parse time specification 'bad': Invalid argumentSu un server con chrony, per correggere in un colpo un orologio molto sfasato si usa chronyc makestep.
sudo chronyc makestepmakestep scarta la differenza residua che si stava correggendo poco a poco e fa saltare subito l'orologio di sistema di quella quantità. La documentazione ufficiale avverte che un cambio improvviso dell'ora può influire su alcuni programmi, quindi usalo solo quando l'orologio è troppo sfasato per correggerlo lentamente.
🔢 FAQ & contenuti consigliati
Impostazioni · locale
[Linux] Comando localectl
Il comando localectl mostra e modifica la lingua di sistema (locale) e il layout della tastiera.
Info di sistema
Comando uptime di Linux (tempo di attività del server & carico medio a 1, 5 e 15 minuti)
Il comando uptime mostra da quanto tempo il server è acceso e il carico medio a 1, 5 e 15 minuti.
Gestione dei servizi
Avviare, fermare e riavviare Apache: comandi e differenza con graceful
Comandi per avviare, fermare e riavviare Apache e controllare lo stato del servizio sui sistemi della famiglia Red Hat e su Ubuntu.
ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.