Come possiamo impostare automaticamente il fuso orario predefinito del sistema in Linux usando Internet? A mio avviso, i server NTP possono aggiornare solo il tempo, ma non il fuso orario. Esiste un server che può cambiare il fuso orario?
Come possiamo impostare automaticamente il fuso orario predefinito del sistema in Linux usando Internet? A mio avviso, i server NTP possono aggiornare solo il tempo, ma non il fuso orario. Esiste un server che può cambiare il fuso orario?
Risposte:
Ho scritto un programma qualche tempo fa che fa questo: tzupdate .
Puoi vedere su cosa imposterebbe il tuo fuso orario (senza effettivamente impostarlo) eseguendo tzupdate -p
:
$ tzupdate -p
Europe/Malta
Puoi impostarlo come reale eseguendolo tzupdate
come root.
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
Questo funziona da:
/etc/localtime
da puntare al file zoneinfo per quel fuso orarioQuesto è un vecchio thread, ma ancora rilevante per Kubuntu 1710 che non cambia automaticamente il fuso orario. Sto usando la soluzione di Chris Down per tzupdate, ma assicurando anche che venga attivato quando il sistema tenta di connettersi a una rete (wifi o altro). Ciò presuppone che si stia utilizzando Network Manager.
Apri prima un terminale.
Installa tzupdate
sudo apt install python-pip
pip install -U tzupdate
Quindi assicurarsi che sia accessibile a tutti gli utenti
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
Prova che funzioni
sudo tzupdate
Dobbiamo quindi assicurarci che questo sia accessibile a tutti gli utenti
sudo su -
tzupdate
che ti inserisce come root e quindi controlla che il comando cambi il fuso orario. Quindi assicurati di uscire per tornare come utente normale
exit
Assicurarsi che tzupdate possa essere eseguito con sudo senza password. Questo è necessario per un passaggio successivo quando lo attiviamo da networkmanager che lo esegue in background. Digitalo in un terminale per modificare il file sudoers
sudo visudo
Aggiungi questa riga alla fine del file
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
Premi CTRL-X, quindi premi Y e poi INVIO per salvare le modifiche
Garantiamo quindi che NetworkManager chiami sempre questo dopo aver attivato una modifica della connessione di rete (ad esempio quando ci si connette a un wifi). Per questo creiamo un file chiamato tzupdate nella cartella dispatcher.d che chiama semplicemente sudo tzupdate. Per eseguire il file sono necessarie autorizzazioni eseguibili
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
Notare che NetworkManager chiamerà execute sudo (cioè sudo tzupdate) che generalmente richiederà una password.
Potrebbe esserci un modo migliore per farlo, ovvero fare in modo che NetworkManager lo chiami solo quando attiva una connessione e non anche per la disattivazione (come farà sopra) - Ho provato a mettere lo script in / etc / network / if-up .d ma questo non ha funzionato per me
Per provare questo in Kubuntu - Cambia il tuo fuso orario locale in qualcos'altro (Vai al plasmoide della data nella barra delle applicazioni e fai clic con il pulsante destro del mouse e seleziona 'Regola data / ora' e quindi 'Fuso orario' dalla scheda)
Spegni e riaccendi il Wi-Fi: vedrai che una volta connesso al Wi-Fi sembrerà attendere circa 30 secondi e quindi dovrebbe cambiare il fuso orario con successo.
Si noti che questo non è stato testato con Wi-Fi in cui è necessario inserire una password in una pagina Web. Si spera che il fatto che questo avvenga alla fine di una connessione di rete dovrebbe consentire a un utente di inserire le credenziali in tempo sufficiente, altrimenti potrebbe essere necessario apportare ulteriori modifiche (verificare l'esistenza di una connessione, verificare di essere in grado di connettersi a Internet, attendere per X secondi se non è possibile connettersi a Internet e riprovare a ripetere Y volte
Non è chiaro cosa intendi per "aggiornamento del fuso orario".
Unix e Linux mantengono il tempo come numero di secondi dal 1 ° gennaio 1970 alle 00:00 UTC. L'orologio di sistema Unix è quindi indipendente dal fuso orario. I fusi orari non esistono nel kernel Linux; è solo quando un'applicazione di spazio utente visualizza il tempo che il numero di secondi dal 1970 viene interpretato usando un fuso orario. Di solito, questa interpretazione viene fatta tramite le funzioni della libreria C. Il fuso orario è selezionato dalla TZ
variabile d'ambiente. Le definizioni del fuso orario (che consistono in un nome di fuso orario, offset da UTC, date in cui è in vigore l'ora legale e gli offset durante l'ora legale) fanno parte di GNU libc e sono generalmente incluse nelle distribuzioni Linux come pacchetto "tzdata". Pertanto, l'aggiornamento delle definizioni del fuso orario è una questione di eseguire apt-get upgrade
, yum update
o qualche operazione simile.
Alcuni software, come Java, hanno i propri file di definizione del fuso orario, che devono essere aggiornati separatamente.
NTP tiene traccia del numero di secondi dal 1 ° gennaio 1900, UTC . Pertanto, NTP, come il kernel Unix, non ha il concetto di fusi orari.