Correction de l'horloge système CentOS

11

L'utilisation de la fonction heure C (nombre de secondes depuis l'époque) montre que l'heure sur mon serveur CentOS 6 actuel a environ 7 heures de retard par rapport à un autre serveur avec l'heure correcte. Comment puis-je corriger l'horloge système? Je ne pense pas que ce soit une dérive car je viens de configurer ce serveur il y a quelques semaines, mais ça pourrait l'être. J'ai configuré ntpd mais cela n'aide pas, peut-être parce que le décalage horaire est trop important.

user3180
la source
3
Vérifiez la sortie de la commande TZ=UTC date.
Michael Hampton
1
vous avez raison, ntpd ne corrigera pas un tel décalage horaire. Pour que ntpd fonctionne réellement, votre système doit se trouver à quelques minutes du serveur de temps.
fpmurphy
Sam 30 nov 09:09:21 UTC 2013 est la sortie que je viens de
recevoir
Oui, c'est sept heures de retard.
Michael Hampton

Réponses:

23

La réponse simple est «définir la date manuellement», ce que vous devez faire, mais pour éviter que cela ne se reproduise, vous devez faire plus.

  1. Assurez-vous que la configuration du fuseau horaire du système est dans un état sain.

    Sauf s'il existe une raison très forte de ne pas le faire (comme des problèmes de compatibilité logicielle), les horloges du serveur doivent toujours fonctionner à l'heure UTC.

    Si vous décidez de ne pas utiliser UTC, choisissez un fuseau horaire en exécutant tzselect. Un fuseau horaire sera imprimé à l'écran que vous utiliserez ci-dessous. Un exemple serait Europe/Moscow. Sinon, utilisez UTCcomme fuseau horaire ci-dessous.

    Here is that TZ value again, this time on standard output so that you
    can use the /usr/bin/tzselect command in shell scripts:
    Europe/Moscow
    

    Réglez l'horloge système sur le fuseau horaire souhaité en procédant comme suit:

    1. Remplacez le contenu de /etc/sysconfig/clockpar ce qui suit:

      ZONE="<timezone>"
      UTC=true
      

      Par exemple:

      ZONE="Europe/Moscow"
      UTC=true
      

      Notez que cela UTC=truedoit être défini ici, même si vous n'utilisez pas UTC comme fuseau horaire. Cela fait référence à l'horloge matérielle du serveur, qui doit toujours être UTC quel que soit le fuseau horaire de votre système choisi.

    2. Remplacez le /etc/localtimefichier par un lien vers le fuseau horaire sélectionné:

      # ln -snf /usr/share/zoneinfo/<timezone> /etc/localtime
      

      Par exemple:

      # ln -snf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
      # ln -snf /usr/share/zoneinfo/UTC /etc/localtime
      
  2. Réglez l'horloge manuellement sur l'heure actuelle.

    1. Synchronisez l'horloge système avec l'heure actuelle:

      # ntpd -g -q
      
    2. Vérifiez que l'heure semble correcte:

      # date
      
    3. Synchronisez l'horloge matérielle du serveur avec l'horloge système:

      # hwclock -wu
      
  3. Redémarrer le PC. Le redémarrage est nécessaire car tous les services système doivent être redémarrés pour récupérer l'heure et le fuseau horaire corrigés, et l'horloge matérielle du serveur doit être testée (par exemple pour une batterie défectueuse).

    Après le redémarrage, vérifiez que le système affiche l'heure correcte et que ntpd fonctionne correctement.

Michael Hampton
la source
Merci beaucoup Michael. Comment puis-je m'assurer qu'il est correct lors de la configuration? Je me souviens avoir sélectionné le bon fuseau horaire, mais l'heure finit toujours par être erronée.
user3180
Dans l'installateur graphique, il y a une case à cocher indiquant "L'horloge système utilise UTC". Laissez toujours cette case cochée, quel que soit le fuseau horaire que vous sélectionnez.
Michael Hampton
0

le point est, assurez-vous que le fuseau horaire est le même que celui des cases que vous comparez

ÉDITER

si TZ est différent

/ etc / localtime

n'oubliez pas de prendre en compte le décalage UTC lors de la comparaison de l'heure système

nandoP
la source