Risposte:
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
.
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.
/etc/localtime
non 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.
Per modificarlo in modo non interattivo sulle recenti versioni di Debian e Ubuntu (Stretch / Xenial ecc.), È necessario rimuoverlo /etc/localtime
, altrimenti /etc/timezone
verrà 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.
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 tzselect
per scoprire quali fusi orari esistono effettivamente (o semplicemente sfogliare la /usr/share/zoneinfo
directory).
Nei sistemi POSIX TZ
dovrebbe 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.
TZ
nel tuo file di profilo crea un link simbolico? Non sembra affatto vero nella mia esperienza. Forse intendevi "Assicurati anche di creare il link simbolico ..."?
$TZ
variabile viene letta dalle glibc
funzioni: gnu.org/software/libc/manual/html_node/TZ-Variable.html
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/localtime
versione anziché una impostata in TZ
...