Come utilizzare il comando timedatectl su Linux
Pubblicato: 2022-06-16 Il comando timedatectl
di Linux ti consente di impostare l'ora, la data e il fuso orario per l'orologio di sistema e l'orologio in tempo reale. Dedica un momento e ti mostreremo come funziona.
È tutto relativo
Il trattamento del tempo da parte del tuo computer è una di quelle cose che potresti aspettarti essere piuttosto semplice. Almeno, finché non inizi a esaminarlo.
L'orologio del sistema Linux conta il numero di secondi dall'epoca di Unix. Era alle 00:00:00 del 1 gennaio 1970, UTC. UTC è l'acronimo di Universal Time Coordinated, ma di solito è detto come Coordinated Universal Time o semplicemente Universal Time. Questo è lo standard temporale in base al quale il mondo gestisce e regola il tempo. Fusi orari diversi applicano un offset a UTC per ottenere l'ora locale. Alcuni fusi orari sono in anticipo rispetto all'UTC e altri sono indietro.
L'orologio di sistema nei computer Linux è basato su software. Ovviamente, non può funzionare quando il computer è spento. Un altro orologio, un orologio in tempo reale basato su hardware con batteria tampone, è in grado di funzionare quando il computer è spento. Il suo scopo è dire all'orologio di sistema che ora è ogni volta che si avvia Linux. A meno che non sia possibile l'accesso a un server NTP (Network Time Protocol).
I server NTP sono server che forniscono informazioni precise sull'ora ai computer che ne fanno richiesta. Se avvii il tuo computer o laptop e non c'è accesso a Internet o non è stato configurato per utilizzare server NTP, l'orologio in tempo reale viene utilizzato per adescare l'orologio di sistema anziché un server NTP.
L'orologio di sistema è sempre in UTC. Qualsiasi applicazione che necessiti di acquisire l'ora locale deve:
- Accedi all'orologio di sistema e ottieni UTC
- Scopri in quale fuso orario si trova e applica l'offset corretto
- Prendere in considerazione se è in vigore l'ora legale
La conversione dall'ora UTC all'ora locale viene eseguita dall'applicazione, non dall'orologio di sistema. Oppure, più precisamente, la conversione viene eseguita dalle librerie di data e ora a cui è collegata l'applicazione. Ecco perché è fondamentale che il tuo computer sappia quale fuso orario è, qual è l'ora UTC, quanti secondi sono trascorsi dall'epoca di Unix e se è in vigore l'ora legale.
Nelle distribuzioni Linux basate su systemd, utilizziamo il comando timedatectl
per visualizzare o modificare tali impostazioni e valori.
Per iniziare con timedatectl
Per visualizzare i dati e l'ora correnti e altri valori, utilizzare il comando timedatectl
con l'operatore di status
.
stato timedatectl
In realtà, puoi eliminare lo stato e otterrai comunque lo stesso output.
timedatectl
Entrambi i set di output mostrano:
- Ora locale : l'ora che il computer pensa che sia, in base al suo fuso orario.
- Ora universale : l'ora UTC.
- Ora RTC : l'ora utilizzata dall'orologio in tempo reale. Di solito, questo è UTC.
- Fuso orario : Informazioni relative al fuso orario configurato.
- Orologio di sistema sincronizzato : indica se l'orologio di sistema è sincronizzato con un server NTP.
- Servizio NTP : se il servizio NTP del computer è attivo.
- RTC in TZ locale : se l'orologio in tempo reale utilizza l'ora locale anziché UTC.
Puoi vedere quanti fusi orari supporta il comando timedatectl
digitando:
timedatectl elenco-fusi orari | wc -l
È molto più di quanto ci siano i fusi orari nel mondo. Se convogliamo l'output in grep
e filtriamo le voci per "America" e convogliamo quello in less
, possiamo scorrere un elenco più gestibile.
timedatectl elenco-fusi orari | grep "America/" | meno
Mentre rivedi quell'elenco, vedrai che "America" è considerato come il suo significato più ampio possibile. La seconda cosa che noterai è che la maggior parte delle voci non sono fusi orari effettivi.
Impostazione del fuso orario
Se guardi l'elenco non filtrato dei fusi orari supportati da timedatectl
vedrai luoghi e fusi orari. Per impostare un fuso orario puoi specificarlo per nome come EST o GMT, oppure puoi scegliere una località nel tuo stesso fuso orario, come Londra o New York.
Reimpostare il tuo fuso orario non è qualcosa che farai spesso, ma forse ti sei trasferito a casa o stai lavorando da un po' e vuoi localizzare il tuo laptop. Se devi reimpostare il tuo fuso orario, scegli una posizione nel fuso orario che desideri utilizzare.
Imposteremo questo computer sull'ora di montagna, che è lo stesso fuso orario di Edmonton. Vedremo quindi come sono cambiate le impostazioni.
timedatectl set-timezone "America/Edmonton"
timedatectl
Il nostro fuso orario è stato modificato, la nostra ora locale è stata modificata e il nostro offset dall'UTC è aumentato.
CORRELATI: Come usare Pipes su Linux
Impostazione manuale dell'ora e della data
Sebbene sia possibile impostare manualmente l'ora e la data, di solito non è necessario. L'uso della sincronizzazione dell'ora e dell'NTP è il modo migliore per mantenere accurati l'ora e la data del computer. Se provi a modificare la data o l'ora del tuo computer, probabilmente riceverai un errore che ti dice che la sincronizzazione dell'ora è in uso.
timedatectl set-time 10:30:00
Utilizzare questo comando per disattivare il servizio di sincronizzazione dell'ora:
sudo systemctl stop systemd-timesyncd.service
È possibile impostare l'ora, la data o entrambe utilizzando l' timedatectl
set-time. le date sono nell'ordine anno-mese-giorno AAAA-MM-GG e l'ora è nell'ordine ore-minuti-secondi HH:MM:SS. Imposteremo l'ora e la data con questo comando:
timedatectl set-time "2022-01-30 10:30:00"
Verificheremo quindi che le modifiche siano state apportate, utilizzando timedatectl
.
timedatectl
La data e l'ora sono cambiate. Inoltre, si noti che il computer utilizza un'ora UTC falsa. Siamo inoltre informati che l'orologio di sistema non viene sincronizzato e il servizio NTP è inattivo.
Se hai accesso a Internet, non appena ripristini il servizio di sincronizzazione dell'ora, l'ora viene recuperata e tutti i dettagli vengono ripristinati correttamente.
sudo systemctl avvia systemd-timesyncd.service
timedatectl
RTC: UTC o ZTL?
È possibile impostare l'orologio in tempo reale sull'ora del fuso orario locale anziché sull'UTC, possibile, ma sconsigliabile. Se apporti la modifica, vedrai un avviso sugli effetti terribili che ciò potrebbe avere sul tuo sistema in futuro.
Il motivo per mostrarti questo metodo è che potresti incontrare una macchina in cui stanno riscontrando strani problemi con le loro impostazioni dell'ora. Ecco come riportare l'orologio in tempo reale su UTC.
Innanzitutto, dovremo impostarlo sul fuso orario locale.
timedatectl set-local-rtc 1
Quindi chiederemo a timedatectl
il suo stato.
timedatectl
Penso che abbiano chiarito i loro sentimenti.
Per ripristinare l'orologio in tempo reale su UTC, utilizzare questo comando:
timedatectl set-local-rtc 0
Impostalo e dimenticalo
A meno che tu non abbia commesso un errore durante l'installazione della tua distribuzione Linux, o non ti trasferisci, di solito non c'è motivo di modificare le impostazioni del tuo sistema e gli orologi in tempo reale.
Imposta l'orologio di sistema sul tuo fuso orario, l'orologio in tempo reale su UTC e assicurati che il tuo sistema stia eseguendo il polling di un server di protocollo dell'ora di rete. Questo è lo stato predefinito dopo la maggior parte delle installazioni.
Se sono tutti impostati, i sistemi temporali del tuo computer si prenderanno cura di loro stessi.
CORRELATO: Come sincronizzare l'ora del server Linux con i server dell'ora di rete (NTP)