Je souhaite modifier le fuseau horaire de l'horloge système à partir du terminal.
Cela peut être fait avec
tzselect
"qui ouvre une interface graphique en terminal"
ou
sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime
"qui va mettre à gmt"
Mais existe-t-il un moyen de définir le fuseau horaire uniquement avec le décalage, c'est-à-dire-1 ou +5, etc.?
Je dois le faire car je suis en train d’écrire une application pour régler les journaux de décalage ou de rapport et la seule information dont je dispose est l’adresse IP de l’utilisateur. Je peux utiliser une application Web pour trouver l'emplacement de l'adresse IP, mais je dois ensuite définir l'offset, ce qui serait facile SI je pouvais obtenir le décalage de l'emplacement, mais si j'avais besoin de trouver une zone et une ville, ce serait vraiment pénible. .
Si quelqu'un sait comment régler l'horloge système avec +/- heure, ce serait génial.
Réponses:
Pour changer de fuseau horaire depuis un terminal, appuyez simplement sur les touches Ctrl+ et Alt+ Tde votre clavier pour ouvrir le terminal. Lorsqu'il s'ouvre, exécutez les commandes ci-dessous:
Une fois ouvert, suivez simplement les écrans pour changer de fuseau horaire.
la source
Vous pouvez également utiliser le nouveau
timedatectl
pour régler l'heure dans 14.04.la source
ls -R --group-directories-first /usr/share/zoneinfo
. (Veillez à ne pas modifier ou effacer un fichier ici.) En savoir plus surposix
etright
préfixes est ici .sudo timedatectl set-timezone Etc/UTC
pour UTC.Vous pouvez utiliser les fichiers GMT ± x dans
/usr/share/zoneinfo/Etc
.la source
/etc/timezone
.sudo dpkg-reconfigure --frontend noninteractive tzdata
Je me rends compte que ce fil est un peu démodé, mais je cherchais une meilleure solution car je devais définir automatiquement le fuseau horaire d'une machine virtuelle lorsqu'un utilisateur le télécharge sur notre site Web et le déploie. Voici ce que j'ai fini avec:
Cela interrogera geoip.ubuntu.com à partir du serveur une fois démarré sur le nouveau réseau (mon script vérifie la connectivité du premier cours), puis définira le fuseau horaire du serveur en fonction de la réponse.
Le "wget -q0 -" indique à wget de ne générer que les résultats sur stdout, qui est ensuite redirigé vers la variable $ tz.
J'espère que ça aide quelqu'un!
la source
TL; DR
/etc/localtime
est un lien symbolique qui pointe vers un fichier au format/usr/share/zoneinfo/Continent/City
. En modifiant l'endroit où il pointe, vous pouvez modifier votre fuseau horaire.Pour modifier le fuseau horaire, supprimez le
/etc/localtime
et attribuez un lien symbolique à la ville de votre choix. Par exemple, lesls -l /etc/localtime
rapports sur lesquels ce fichier pointe/usr/share/zoneinfo/America/Denver
. Pour changer à New York, je faissudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
La capture d'écran ci-dessous montre les étapes et la confirmation de
timedatectl
la source
tzdata
déjà des réponses , donc suggérer la même chose est inutile. Deuxièmement,tzdata
fait à peu près la même chose. C'est à l'utilisateur de décider ce qu'il préfère, il n'est donc ni meilleur ni pire - juste la préférence d'une personne./var/lib/dpkg/info/tzdata.list
suggère que tous les éléments/usr/share/zoneinfo
livrés avec ce paquet, je supposerais que vous devez installer le paquet pour pouvoir disposer de tous les éléments, mais franchement, je ne suis pas tout à fait sûr, et je ne connais pas très bien comment cela fonctionne. distributions. Pensez à poser cette question sous forme de question sous Unix et Linux , et n'hésitez pas à faire référence à cet article si vous souhaitez fournir un contexte à la question.Le moyen facile de mettre à jour le fuseau horaire consiste à utiliser
sudo dpkg-reconfigure tzdata
. Mais ce n'est pas si facile à écrire.Si vous souhaitez définir le fuseau horaire de manière explicite via un script (par exemple, pour configurer une VM), voici une recette:
Définissez une variable pour le fuseau horaire souhaité, par exemple un des
Les valeurs valides sont les répertoires et les noms de fichiers sous
/usr/share/zoneinfo
.Alors simplement
Notez que les deux
/etc/localtime
et/etc/timezone
doivent être cohérents.Probablement maintenant, redémarrez pour mettre à jour tous vos services (par exemple, cron).
la source
cp
pour définir / etc / localtime. / etc / localtime est un lien symbolique vers le fichier correct. Si vous lecp
modifiez, vous écraserez le contenu du fichier tzdata vers lequel il pointe actuellement. Ainsi, tout à coup (par exemple), le fichier tzdata UTC contient des données de fuseau horaire pour Europe / London plutôt que pour UTC, ce qui est mauvais (et gênant). à résoudre, comme je peux le dire par expérience personnelle)Voici la méthode que j'utilise, qui est centrée sur les États-Unis, car je n'ai pas à m'inquiéter des fuseaux horaires non américains.
Si je dois déterminer le fuseau horaire actuel, je fais soit:
ou
Je fais alors:
où
<_designation_>
est l'un des suivants:États-Unis / Est des
États - Unis / Centre des
États-Unis / Montagne
États-Unis / Pacifique
États - Unis / Alaska
États - Unis / Aléoutienne
États-Unis / Arizona
États-Unis / Est-Indiana
États - Unis / Hawaï
États-Unis / Indiana-Starke
États - Unis / Michigan
États-Unis / Pacifique-Nouveau
États - Unis / Samoa
PAR EXEMPLE:
D'autres désignations de fuseaux horaires peuvent être trouvées ici: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
la source
tzselect
est un bon moyen d'obtenir la chaîne du fuseau horaireVous ne pouvez le faire que si vous sélectionnez le fichier de fuseau horaire que vous souhaitez faire correspondre à chaque décalage de fuseau horaire.
Certaines réponses ont suggéré d'utiliser les fichiers de / usr / share / zoneinfo / Etc, mais le problème avec ceux-ci est qu'ils sont agnostiques DST.
Par conséquent, à moins que vous ne choisissiez une configuration de fuseau horaire correspondant à chaque décalage ou que vous ne vous préoccupiez pas de l'heure d'été, il n'existe aucun moyen de le faire de manière générique.
la source