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/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.
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.
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.
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 ..."?
$TZvariabile viene letta dalle glibcfunzioni: 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/localtimeversione anziché una impostata in TZ...