Quel est le fuseau horaire par défaut dans un Linux typique (le cas échéant)?

1

J'administre un système d'exploitation Linux CentOS 6.

Je souhaite supprimer toutes les informations de fuseau horaire explicites lorsqu'elles peuvent avoir une incidence autre que le fuseau horaire UTC du système. En effet, il s’agit d’un modèle de machine virtuelle et il a également été décidé d’utiliser le fuseau horaire par défaut au format UTC.

Dois-je modifier le /etc/sysconfig/clockfichier (je suppose qu'il s'agit d'une entité de configuration spécifique à CentOS) /etc/localtime, ou des deux? Puis-je supprimer les deux, et va-t-il alors revenir à l'UTC ou à d'autres valeurs par défaut intrinsèques? Je ne trouve tout simplement pas de documentation sur le comportement du système sans ces fichiers, par exemple. Ou peut-être que je ne devrais pas supprimer non plus, mais pourquoi y a-t-il une préférence de fuseau horaire répartie sur deux fichiers? À moins que cela ait un sens légèrement différent dans chacun?

Je peux tester de manière empirique, bien sûr, mais je pourrais changer de distribution à l'avenir, puis j'aurai à nouveau un fuseau horaire supplémentaire, pendant que mes scripts essaieront de tirer pour une compatibilité distro-neutre.

amn
la source

Réponses:

4

Le fuseau horaire par défaut est sans fuseau horaire, c'est-à-dire l'heure UTC. Il n'y a pas d'information de zone codée en dur, car elle pourrait très vite devenir incorrecte / obsolète.

L'horloge du noyau fonctionne toujours sur UTC (ou du moins ce qu'il pense être UTC). Par défaut, il s'attend à lire l'heure UTC à partir de l'horloge matérielle (RTC), mais permet au processus de démarrage de spécifier le décalage "heure locale" correct, car la plupart des PC conservent l'heure locale dans le RTC.

L'espace utilisateur fonctionne avec les horodatages "d'époque" basés sur UTC, mais lit /etc/localtimeou la $TZvariable d'environnement lors de l'affichage des dates. Si aucun n'existe, vous obtiendrez UTC.

Vous pouvez également les définir explicitement sur "UTC" ou "Etc / UTC" si vous le souhaitez (par exemple, export TZ=UTCremplacer temporairement la zone du système).


Certaines distributions divisent la configuration car les fichiers zoneinfo eux-mêmes ne contiennent pas le nom de la zone. Une fois l'administrateur copié /usr/share/zoneinfo/Europe/Londondans /etc/localtime, il n'est plus possible de savoir qu'il s'agissait de "Europe / London".

Par exemple, le nom est nécessaire pour afficher la zone actuelle dans les écrans de configuration ou pour mettre à jour le localtimefichier à chaque démarrage (il doit être à nouveau copié dans / etc chaque fois que zoneinfo est mis à jour).

D'autres distributions résolvent ce problème en créant un lien symbolique avec le fichier zoneinfo et en lisant la cible du lien symbolique. Cela doit cependant /usrêtre monté très tôt, ce qui n’est pas apprécié par les Graybeards.

Les fichiers de configuration ne sont pas portables. /etc/sysconfigest spécifique à Red Hat (Debian a /etc/default). Cependant, sur les systèmes systemd , l'approche par lien symbolique est toujours utilisée et il existe un timedatectl set-timezoneoutil pour la changer.

Grawity
la source
Très utile, merci. Mais j'ai lu que certaines parties de votre réponse sont légèrement contradictoires. D'abord, vous dites que le fuseau horaire par défaut n'est pas un fuseau horaire, puis que si aucun [fichier de configuration] n'existe, j'obtiendrai le temps UTC.
amn
1
@ amn: C'est la même chose. Tous les autres fuseaux horaires sont spécifiés en tant que décalage par rapport à l'heure UTC. Sous Linux, zdump -v UTCmontrera qu'il n'a pas de réglages.
Grawity
Ok, eh bien dans mon cas, ma /etc/sysconfig/clockest vide depuis un moment, car je suppose que supprimer la variable ZONE m'aidera à revenir en UTC. Mais après avoir observé que dateje passais du temps dans l’EDT (je n’avais pas de TZ propre dans mon environnement), je l’ai retrouvé dans un /etc/localtimefichier, qui semble contenir les données pour le fuseau horaire de l’EDT (ce n’est pas un lien symbolique, mais correspond à la signature MD5 /usr/share/zoneinfo/US/Easternde autres). Je pensais /etc/sysconfig/clockque le système se mettait à jour /etc/localtimeautomatiquement. Peut-être ne le fait-il que lorsque le premier contient réellement du texte?
amn
Eh bien oui, le processus de démarrage ne peut pas vraiment deviner le fichier zoneinfo correct si la configuration est vide. (Même la recherche par hachage ne fonctionnerait pas, car le but est de mettre à jour le fichier lorsqu'il est modifié .)
grawity le
1

Dans mon travail, les machines se déplacent physiquement à travers le monde de temps en temps, donc une association avec un fuseau horaire ne ferait que causer des problèmes.

Ce que je fais, en tant que grand fan d’UTC, c’est de régler le fuseau horaire pour Reykjavik. Cela donne UTC +0, sans cette DST embêtante.

Ce que vous faites pour changer cela quand vous en avez besoin, est de créer un lien symbolique /etc/localtimevers toute définition de fuseau horaire appropriée dans /usr/share/zoneinfo/. Je ne suis pas sûr que ce soit spécifique à CentOS non plus, nous utilisons simplement beaucoup de serveurs CentOS.

Jarmund
la source
Au lieu de définir le fuseau horaire uniquement sur UTC?
Grawity
@grawity J'ai vu des systèmes sans définition UTC.
Jarmund