225 votes

Réglage du fuseau horaire à partir du terminal

Je veux changer le fuseau horaire de l'horloge système depuis le terminal.

Cela peut être fait avec

tzselect

"qui ouvre un gui dans le terminal"

o

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

"qui sera réglé sur gmt"

Mais existe-t-il un moyen de définir le fuseau horaire avec seulement le décalage, par exemple -1 ou +5, etc.

J'ai besoin de faire cela car j'écris une application pour ajuster le timeoffset ou rapporter les logs et la seule information dont je dispose est l'IP de l'utilisateur. Je peux utiliser une application web pour trouver l'emplacement de l'IP, mais je dois ensuite définir le décalage, ce qui serait facile si je pouvais simplement obtenir le décalage de l'emplacement, mais si je dois trouver la zone et la ville, ce serait une vraie douleur.

Si quelqu'un connaît la réponse à la question de savoir comment régler l'horloge du système avec +/heure, ce serait génial.

344voto

Mitch Points 102545

Pour changer de fuseau horaire depuis le terminal, il suffit d'appuyer sur Ctrl + Alt + T sur votre clavier pour ouvrir le Terminal. Lorsqu'il s'ouvre, exécutez la ou les commandes ci-dessous :

sudo dpkg-reconfigure tzdata

Une fois ouvert, il suffit de suivre les écrans pour changer de fuseau horaire.

183voto

Collin Anderson Points 3000

Vous pouvez également utiliser la nouvelle timedatectl pour établir le temps en 14.04.

sudo timedatectl set-timezone America/New_York

25voto

Clayton Dukes Points 372

Je me rends compte que ce fil de discussion date un peu, mais je cherchais une meilleure solution car j'avais besoin de définir automatiquement le fuseau horaire dans une VM après qu'un utilisateur l'ait téléchargée depuis notre site Web et l'ait déployée. Voici ce à quoi j'ai abouti :

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

Cela va interroger geoip.ubuntu.com à partir du serveur une fois qu'il est démarré sur le nouveau réseau (mon script vérifie la connectivité en premier lieu bien sûr) et ensuite définir le fuseau horaire du serveur en fonction de la réponse.

L'option "wget -q0 -" indique à wget de n'afficher que les résultats sur stdout, qui sont ensuite transmis à la variable $tz.

J'espère que cela aidera quelqu'un !

21voto

dkagedal Points 111

Vous pouvez utiliser le GMT± x fichiers dans /usr/share/zoneinfo/Etc .

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

16voto

Sergiy Kolodyazhnyy Points 97292

TL;DR /etc/localtime est un lien symbolique qui pointe vers un fichier dans le répertoire /usr/share/zoneinfo/Continent/City . En modifiant l'endroit où il pointe, vous pouvez modifier votre fuseau horaire.

Afin de changer de fuseau horaire, supprimez le /etc/localtime et attribuez un lien symbolique à la ville de votre choix. Par exemple, ls -l /etc/localtime indique que ce fichier pointe vers /usr/share/zoneinfo/America/Denver . Pour le changer en New York, je fais

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Attendez une minute pour que mon horloge soit mise à jour

La capture d'écran ci-dessous montre les étapes et la confirmation de l'opération. timedatectl

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X