CodeGym /Corsi /Docker SELF /Gestione dei fusi orari e del tempo: comandi timedatectl

Gestione dei fusi orari e del tempo: comandi timedatectl

Docker SELF
Livello 3 , Lezione 2
Disponibile

Gestione dei fusi orari e del tempo: comandi timedatectl

1. Lavorare con il tempo in Linux

Perché è importante configurare correttamente l'orario?

Immagina di cercare di rintracciare un errore nel registro di sistema, ma l'ora nei log non corrisponde a quella reale. Oppure, ancora peggio, il tuo server in un'azienda internazionale mostra orari diversi per diversi utenti. Una configurazione corretta dell'orario non è solo una comodità: è essenziale per il funzionamento dei sistemi, la sincronizzazione dei file, il mantenimento della sicurezza (i certificati SSL dipendono dall'orario) e la coordinazione delle attività lavorative.

In Linux il tempo può essere rappresentato in due forme:

  1. Tempo di sistema (System Time) — è il tempo che il sistema operativo utilizza per le sue attività.
  2. Tempo hardware (Hardware Time) — è memorizzato a livello hardware (BIOS/UEFI).

Lavoreremo con il tempo di sistema attraverso lo strumento timedatectl.


2. Basi del comando timedatectl

timedatectl — è un'utilità da riga di comando che ti offre un'interfaccia comoda per gestire l'ora. Ti consente di:

  • Controllare le impostazioni attuali di ora e fuso orario;
  • Impostare l'ora di sistema e quella hardware;
  • Configurare i fusi orari;
  • Abilitare o disabilitare la sincronizzazione dell'ora con NTP (Network Time Protocol).

Controllo dell'orario attuale

Partiamo dalle basi. Per conoscere l'ora attuale e le impostazioni, esegui il comando:

timedatectl

Esempio di output:

Local time: Tue 2023-10-31 12:34:56 MSK
Universal time: Tue 2023-10-31 09:34:56 UTC
RTC time: Tue 2023-10-31 09:34:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Spiegazione dei campi:

  • Local time: Ora locale (di sistema).
  • Universal time: Ora in formato UTC (tempo universale coordinato).
  • RTC time: Ora hardware (a livello di BIOS/UEFI).
  • Time zone: Fuso orario attuale.
  • System clock synchronized: Se l'orologio è sincronizzato tramite NTP.
  • NTP service: Se il servizio di sincronizzazione dell'ora è attivo.
  • RTC in local TZ: Se l'ora hardware corrisponde al fuso orario locale.

Impostazione e cambio del fuso orario

A volte, dopo un trasferimento o un cambiamento nei requisiti di un progetto, potresti dover cambiare il fuso orario. Ad esempio, il tuo server era configurato per New York, ma ora serve utenti a Mosca. Trovi i fusi orari nella directory /usr/share/zoneinfo.

Per visualizzare i fusi orari disponibili, esegui:

timedatectl list-timezones

L'output sarà una lista enorme del seguente tipo:

Africa/Abidjan
America/New_York
Asia/Tokyo
Europe/Moscow

Puoi impostare un nuovo fuso orario con il comando:

sudo timedatectl set-timezone Europe/Moscow

Controlla che il fuso orario sia stato cambiato:

timedatectl

Esercizio pratico

  1. Trova il fuso orario attuale del tuo server.
  2. Modifica il fuso orario a UTC.
  3. Ripristina il fuso orario al tuo locale.

3. Impostazione manuale del tempo

Anche se i server moderni generalmente sincronizzano il tempo tramite NTP, a volte è necessario impostare l'orario manualmente. Questo è utile se il server si trova in una rete isolata senza accesso a internet.

Per prima cosa, puoi controllare il tempo di sistema attuale:

date

Puoi impostare un nuovo orario utilizzando il comando:

sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"

Ad esempio, per impostare l'orario al 1 novembre 2023, 12:00:

sudo timedatectl set-time "2023-11-01 12:00:00"

Ora controlla di nuovo il risultato:

timedatectl

Impostazione dell'orario hardware

L'orario hardware (conosciuto anche come RTC — Real-Time Clock) viene gestito a livello di BIOS/UEFI. Se l'orario hardware non è sincronizzato con quello di sistema, questo potrebbe causare problemi durante il riavvio. Per sincronizzare, esegui:

sudo hwclock --systohc

Questo comando imposterà l'orario hardware in base all'orario di sistema.

Se hai bisogno di fare il contrario (sincronizzare l'orario di sistema con quello hardware), usa:

sudo hwclock --hctosys

4. Sincronizzazione del tempo tramite NTP

La sincronizzazione del tempo tramite NTP è un modo per mantenere automaticamente l'ora attuale utilizzando server remoti. Nella maggior parte delle distribuzioni Linux moderne, NTP è abilitato per impostazione predefinita.

Verifica della configurazione di NTP

Esegui:

timedatectl status

Se NTP è disabilitato (la riga NTP service mostrerà inactive), abilitalo:

sudo timedatectl set-ntp true

Per disabilitare NTP, esegui:

sudo timedatectl set-ntp false

Se NTP non funziona, assicurati che i servizi corrispondenti siano attivi. Ad esempio, nei sistemi con systemd-timesyncd verifica che il servizio sia attivo:

sudo systemctl status systemd-timesyncd

5. Esercizio pratico

Compito

  1. Imposta il fuso orario del tuo sistema su UTC.
  2. Imposta manualmente l'ora di sistema su 12:00:00, 1 novembre 2023.
  3. Abilita la sincronizzazione dell'orario tramite NTP.

Verifica

Dopo aver completato il compito, assicurati che:

  • L'orario di sistema corrisponda ai parametri impostati.
  • Il fuso orario sia cambiato in UTC.
  • Il servizio NTP sia attivo.

6. Errori frequenti e insidie

  1. "RTC in local TZ: no" non corrisponde al fuso orario locale. Molti sistemi preferiscono utilizzare UTC per l'orario hardware, per evitare confusione quando si lavora tra diversi fusi orari. Questo non è un errore, ma piuttosto una preferenza.

  2. Errore di accesso durante la modifica dell'orario. Il comando timedatectl richiede privilegi di superutente. Assicurati di utilizzare sudo.

  3. La sincronizzazione NTP non si attiva. Controlla se il servizio NTP è in esecuzione sul tuo server. Ad esempio, per systemd-timesyncd, esegui:

    sudo systemctl start systemd-timesyncd
    

Perché serve nella pratica?

  1. Amministrazione di server. Configurare l'orario e i fusi orari è importante per il corretto funzionamento dei log, la sincronizzazione dei dati e la pianificazione delle attività.
  2. Lavorare con progetti internazionali. Usare UTC come standard aiuta a evitare confusione quando si lavora con clienti da diversi fusi orari.
  3. Colloqui e certificazioni. Domande su timedatectl e sulla gestione dell'orario appaiono negli esami e nei colloqui per posizioni da amministratore di sistema.

Ora sei pronto a gestire il tempo in Linux come gestisci le tue deadline: con sicurezza, precisione e senza sorprese inutili.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION