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.

12voto

designerWhoCodes Points 221

La manière la plus simple de mettre à jour le fuseau horaire est d'utiliser sudo dpkg-reconfigure tzdata . Mais ce n'est pas si facile à écrire.

Si vous voulez définir le fuseau horaire explicitement via un script (par exemple pour configurer une VM), voici une recette :

Définissez une variable pour le fuseau horaire que vous souhaitez, par exemple l'un des éléments suivants

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Les valeurs valides sont les répertoires et les noms de fichiers sous /usr/share/zoneinfo .

Alors simplement

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Notez que les deux /etc/localtime y /etc/timezone doit être cohérent.

Il est probable qu'il faille maintenant redémarrer pour que tous vos services soient également mis à jour (par exemple, cron).

5voto

Redblur Points 51

Voici la méthode que j'utilise, qui est centrée sur les États-Unis car je n'ai pas besoin de me préoccuper des fuseaux horaires autres que ceux des États-Unis.

Si je dois déterminer le fuseau horaire actuel, je le fais soit :

cat /etc/timezone  

o

sudo hwclock --show  

Je le fais alors :

timedatectl set-timezone <_designation_>

wobei <_designation_> est l'un des éléments suivants :

US/Est
US/Central
US/Montagne
US/Pacifique
US/Alaska
US/Aleutian
US/Arizona
US/Est-Indiana
US/Hawaii
US/Indiana-Starke
US/Michigan
US/Pacifique-Nouveau
US/Samoa

E.G. :

timedatectl set-timezone US/Eastern  

D'autres désignations de fuseaux horaires peuvent être trouvées ici : https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

0voto

Alex G Points 101

Vous ne pouvez pas le faire si vous ne sélectionnez pas le fichier de fuseau horaire que vous voulez faire correspondre à chaque décalage de fuseau horaire.

Certaines réponses suggèrent d'utiliser les fichiers dans /usr/share/zoneinfo/Etc, mais le problème avec ces fichiers est qu'ils ne tiennent pas compte de l'heure d'été.

Ainsi, à moins que vous ne choisissiez une configuration de fuseau horaire correspondant à chaque décalage, ou que vous ne vous souciiez pas de l'heure d'été, il n'y a aucun moyen de le faire de manière générique.

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