Come resettare permanentemente il fuso orario in Debian?


Risposte:


73

Uno strumento che ho trovato più facile da usare è dpkg-reconfigure. Uso:

sudo dpkg-reconfigure tzdata

Ti verrà data una moltitudine di scelte, incluse alcune che non sono incluse in tzselect.


Un vantaggio nel farlo in questo modo è che lo stai facendo in modo riproducibile e limitando le possibilità di fare qualcosa di sbagliato come inserire un fuso orario che non esiste.
Mogget,

1
Questa è roba buona, ma se hai bisogno di un'opzione non interattiva (e quindi scriptabile), vedi la mia risposta qui sotto.
mc0e

14

Questo è presumibilmente un po 'in ritardo per l'OP, e più destinato ad altri ricercatori che arrivano qui.

Se hai bisogno di una soluzione non interattiva, prova questa soluzione cambiando fuso orario con dpkg-reconfigure tzdata e debconf-set-selections

echo "Europe/Zurich" > /etc/timezone 
dpkg-reconfigure -f noninteractive tzdata

Puoi capire il tuo fuso orario frugando in / usr / share / zoneinfo. In effetti il ​​comando dpkg-reconfigure sopra copia il file appropriato da lì in / etc / localtime. Lo facevo solo manualmente e sembra funzionare bene.

Non essere troppo sorpreso se i processi di lunga durata non rilevano il cambiamento. ad es. vengono in mente timestamp dei log di Apache. Valuta se questo è importante e quindi se devi riavviare i processi in esecuzione o anche riavviare.


3
Fai attenzione perché questo funzioni, è un requisito che /etc/localtimenon esiste già. Se esiste ed è un collegamento software a /usr/share/zoneinfo/whatever, viene preso come base ed /etc/localtimeè aggiornato di conseguenza, sovrascrivendo le modifiche.
Multisync,

11

Per modificarlo in modo non interattivo sulle recenti versioni di Debian e Ubuntu (Stretch / Xenial ecc.), È necessario rimuoverlo /etc/localtime, altrimenti /etc/timezoneverrà sovrascritto.

echo 'Europe/Zurich' > /etc/timezone 
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

Questa risposta si basa sulla risposta di mc0e. Non riesco ad aggiungere un commento con la mia reputazione.


3

TL; DR

echo "TZ=Etc/UTC" >> /etc/environment
tzconfig

dove Etc/UTCè il fuso orario preferito che hai trovato usando tzselect.

Versione più lunga

Quando stai usando

dpkg-reconfigure tzdata

le informazioni sul fuso orario non vengono conservate dopo il riavvio. Puoi verificare le tue impostazioni con

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

Se stai solo aggiornando /etc/timezone, l'aggiornamento non sarà coerente con /etc/localtime, quindi è meglio eseguirlo

tzconfig

Utilizzare tzselectper scoprire quali fusi orari esistono effettivamente (o semplicemente sfogliare la /usr/share/zoneinfodirectory).

Nei sistemi POSIX TZdovrebbe avere la precedenza prima di /etc/localtime:

export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018

L'uso diretto TZ può salvare molte chiamate di sistema poiché le funzioni relative a data / ora utilizzate di frequente devono accedere al filesystem ogni volta che un programma richiede la data corrente. È una micro-ottimizzazione, ma abbastanza semplice.


Sei positivo esportare TZnel tuo file di profilo crea un link simbolico? Non sembra affatto vero nella mia esperienza. Forse intendevi "Assicurati anche di creare il link simbolico ..."?
AMN

1
@amn No, questo non creerà un collegamento simbolico, ho provato a chiarirlo. Ma la $TZvariabile viene letta dalle glibcfunzioni: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart

non dovrebbe essere echo "TZ=Etc/UTC" >> /etc/environment? ti manca la TZ=parte ... (se qualcuno esegue ancora versioni debian antiche). Inoltre, cose non interattive come i demoni userebbero comunque la /etc/localtimeversione anziché una impostata in TZ...
Matija Nalis,

@MatijaNalis Sì, hai ragione. Grazie per la correzione!
Tombart,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.