3 votes

Comment puis-je savoir si l'horloge matérielle de Linux est réglée sur l'heure locale ou l'heure UTC ?

J'ai un PC à double démarrage, et pour que Windows et Linux soient d'accord sur l'heure, j'ai réglé l'horloge matérielle sur l'heure locale dans Linux, comme décrit ci-après. aquí .

Maintenant, je veux faire un script pour vérifier si mon réglage Linux est tel que je le souhaite - pour cela, je dois vérifier si l'horloge matérielle est sauvegardée en localtime ou en UTC. Mais le hwclock me donne juste l'heure en heure locale, même si l'horloge matérielle est en UTC.

Alors, comment puis-je savoir si l'horloge matérielle de Linux est réglée sur l'heure locale ou sur l'heure UTC ?

(Linux est Crunchbang 11 - famille Debian, et Windows est 8.1)

1voto

kel Points 101

Vous pouvez utiliser hwclock pour montrer les résultats en localtime o utc .

Il suffit d'utiliser le drapeau correspondant à chaque cas :

jim@g6:~$ sudo hwclock --localtime
lun 11 ago 2014 03:12:18 CLT  -0.547401 seconds

jim@g6:~$ sudo hwclock --utc
dom 10 ago 2014 23:12:22 CLT  -0.672848 seconds

Ensuite, exécutez date et vérifiez lequel des résultats ci-dessus correspond à la sortie de date .

0voto

Ruslan Gerasimov Points 2098

Vous pouvez essayer le script ci-dessous :

#!/bin/bash

curl time.nist.gov:13 2>&1|tee time_nist_gov_13
while cat time_nist_gov_13|grep 'Empty\|denied\|unreachable'
do
 sleep 0.1
 curl time.nist.gov:13 2>&1|tee time_nist_gov_13
done

str=$(cat time_nist_gov_13 | sed '1,3d'|awk  '{print $3}')

hh=$(echo $str|awk -F':' '{print $1}')
mm=$(echo $str|awk -F':' '{print $2}')

a=$(date -u | awk '{print $4 }'| awk -F':' '{print $1}') 
b=$(date -u | awk '{print $4 }'| awk -F':' '{print $2}')

mindiff=$(echo "$b-$mm"|bc)

if [ $mindiff == "-1" ] ; then $mindiff = "1"; 
fi

if [ "$hh" == "$a" ] && ([ "$mm" == "$b" ] || [ "$mindiff" == "1" ])   ; then echo "Your Local time is assigned to UTC";
 else echo "Your Local time is NOT assigned to UTC";
fi

L'explication est la suivante : le script récupère l'heure UTC+0 et la compare à date -u l'heure locale soustraite de la différence de fuseau horaire par rapport à UTC+0, et si le résultat est le même, cela signifie que votre heure locale est correcte pour votre fuseau horaire.

Il ne fonctionnera pas toujours parfaitement, car le serveur peut parfois être inaccessible et le script sera en attente, et le script ne traite que trois types d'erreurs filtrant par 'Empty\|denied\|unreachable'

Donc, une fois que vous avez obtenu "Your Local time is tied to UTC", c'est tout, l'heure locale est liée à UTC avec le décalage du fuseau horaire local.

mais de toute façon j'ai écrit ce script pour donner une idée de comment cela pourrait être, et si vous en avez besoin de manière plus sérieuse, veuillez inclure plus de détails. Alors tout le monde peut voir vos exigences à la fonctionnalité. J'espère que cela vous aidera.

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