GNU/Linux >> Tutoriels Linux >  >> Linux

7 Exemples de commande Linux hwclock pour définir la date et l'heure de l'horloge matérielle

L'horloge gérée par le noyau Linux n'est pas la même que l'horloge matérielle.

L'horloge matérielle fonctionne même lorsque vous éteignez votre système.

L'horloge matérielle est également appelée horloge BIOS. Vous pouvez modifier la date et l'heure de l'horloge matérielle à partir du BIOS.

Cependant, lorsque le système est opérationnel, vous pouvez toujours afficher et définir la date et l'heure du matériel à l'aide de la commande Linux hwclock, comme expliqué dans ce didacticiel.

1. Afficher la date et l'heure de l'horloge matérielle

Tapez simplement hwclock, qui affichera la date et l'heure de l'horloge matérielle de votre système. Il s'agit de la même date et heure que vous verrez sur l'écran du BIOS. Vous pouvez également utiliser l'option -r ou –show pour afficher la date et l'heure.

# hwclock
Sat 10 Aug 2013 08:26:12 AM PDT  -0.312862 seconds

# hwclock -r
Sat 10 Aug 2013 08:20:54 AM PDT  -0.109748 seconds

# hwclock --show
Sat 10 Aug 2013 08:21:12 AM PDT  -0.640982 seconds

Remarque :La sortie de la commande date peut être la même que la sortie de la commande hwclock (en fait, elle devrait être la même). Mais, la commande date obtient la date et l'heure de l'horloge gérée à partir du noyau Linux. Ceci par exemple, il y a environ 10 minutes de différence entre eux.

# date
Sat Aug 10 08:11:21 PDT 2013

2. Copier l'heure système sur l'heure matérielle

Vous voulez vraiment vous assurer que votre horloge matérielle a la même date et heure que l'horloge système.

Comme vous le voyez actuellement, il y a une différence entre l'horloge système et l'heure de l'horloge matérielle.

# date
Sat Aug 10 08:16:17 PDT 2013

# hwclock
Sat 10 Aug 2013 08:26:53 AM PDT  -0.687841 seconds

Utilisez donc la commande hwclock comme indiqué ci-dessous pour régler l'horloge matérielle de la même manière que l'horloge système. C'est l'utilisation typique de la commande hwclock.

# hwclock -w

# hwclock
Sat 10 Aug 2013 08:16:27 AM PDT  -0.625382 seconds

# date
Sat Aug 10 08:16:28 PDT 2013

Remarque :Les options -w et –systohc font la même chose. J'aime utiliser –systohc car il est facile à retenir. –systohc signifie « horloge système vers matériel », qui copie l'heure du système vers l'horloge matérielle.

# hwclock --systohc

3. Définir manuellement la date et l'heure de l'horloge matérielle

Au lieu de copier la date et l'heure du système sur l'horloge matérielle, vous pouvez également définir manuellement la valeur à l'aide de l'option –set et –date, comme indiqué ci-dessous.

Ce qui suit fixera la date au 11 août 2013. Veuillez noter que si vous ne spécifiez pas l'heure, elle sera fixée à 12:00:00 AM.

# hwclock --set --date 8/11/2013

# hwclock
Sun 11 Aug 2013 12:00:04 AM PDT  -0.703489 seconds

Vous pouvez également régler la date et l'heure en même temps, comme indiqué ci-dessous. Veuillez noter qu'il utilisera l'heure locale par défaut.

# hwclock --set --date "8/11/2013 23:10:45"

# hwclock
Sun 11 Aug 2013 11:10:48 PM PDT  -0.562862 seconds

Vous pouvez également prendre la sortie de la commande date et la transmettre à l'option –set et –date comme indiqué ci-dessous.

# hwclock --set --date "Sat Aug 10 08:31:24 PDT 2013"

# hwclock
Sat 10 Aug 2013 08:31:28 AM PDT  -0.594118 seconds

4. Copier l'heure du matériel dans l'heure du système

Lorsque votre horloge matérielle affiche la date et l'heure correctes, mais pas votre horloge système, vous pouvez utiliser l'option -s comme indiqué ci-dessous pour copier l'heure matérielle dans l'heure système, comme indiqué ci-dessous.

# hwclock
Sat 10 Aug 2013 08:20:28 AM PDT  -0.687872 seconds

# date
Sat Aug 10 08:34:48 PDT 2013

# hwclock -s

# date
Sat Aug 10 08:20:55 PDT 2013

Remarque :Les options -s et –hctosys font la même chose. J'aime utiliser –hctosys car il est facile à retenir. –hctosys signifie « horloge matérielle vers système », qui copie l'heure de l'horloge matérielle vers l'horloge système.

# hwclock -hctosys

Lors du test, si vous avez altéré l'heure de votre système, vous pouvez utiliser les exemples de commande de date pour la régler sur la date et l'heure correctes.

5. Mode de débogage hwclock

Lorsque vous passez l'option –debug au hwclock, il affiche des informations de débogage, qui montrent exactement ce que fait la commande hwclock.

Ce qui suit montre exactement ce qu'il fait lorsque nous copions l'heure système sur l'heure matérielle.

# hwclock --systohc --debug
hwclock from util-linux-ng 2.17.2
Using /dev interface to clock.
Last drift adjustment done at 1375974983 seconds after 1969
Last calibration done at 1375974983 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2013/08/10 15:16:37
Hw clock time : 2013/08/10 15:16:37 = 1375974997 seconds since 1969
Time elapsed since reference time has been 0.009002 seconds.
Delaying further to reach the new time.
Setting Hardware Clock to 15:16:37 = 1375974997 seconds since 1969
ioctl(RTC_SET_TIME) was successful.
Not adjusting drift factor because it has been less than a day since the last calibration.

Ce qui suit montre exactement ce qu'il fait lorsque nous copions l'heure du matériel sur l'heure du système.

# hwclock -hctosys --debug
hwclock from util-linux-ng 2.17.2
Using /dev interface to clock.
Last drift adjustment done at 1375975224 seconds after 1969
Last calibration done at 1375975224 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2013/08/10 15:23:20
Hw clock time : 2013/08/10 15:23:20 = 1375975400 seconds since 1969
Calling settimeofday:
        tv.tv_sec = 1375975400, tv.tv_usec = 0
        tz.tz_minuteswest = 420

Remarque :sur les machines alpha, vous pouvez utiliser getepoch pour afficher l'époque, setepoch pour définir l'époque. Lorsque vous essayez de l'exécuter sur une machine Alpha, vous obtenez la machine d'erreur suivante.

# hwclock --setepoch --epoch=1952
The kernel keeps an epoch value for the Hardware Clock only on an Alpha machine.
This copy of hwclock was built for a machine other than Alpha
(and thus is presumably not running on an Alpha now).  No action taken.

6. Ajuster l'horloge matérielle

Lorsque le système démarre, il prend l'heure de l'horloge matérielle. Le fichier /etc/adjtime est utilisé par l'option hwclock –adjust pour contrôler l'ajustement.

# hwclock --adjust

Le fichier /etc/adjtime comporte les trois lignes suivantes.

# cat /etc/adjtime
-3.019877 1375975224 0.000000
1375975224
UTC
  • Les trois valeurs de la 1ère ligne représentent 1) le taux de dérive systématique en secondes par jour, 2) le nombre de secondes depuis 1969 UTC de l'ajustement récent 3) juste 0
  • La ligne 2 est la même valeur que celle que vous voyez dans la 1ère ligne, 2ème valeur. c'est-à-dire le nombre de secondes depuis 1969 UTC d'ajustement récent
  • La ligne 3 indiquera UTC ou LOCAL

7. Mode test hwclock

Lorsque vous modifiez des éléments à l'aide de hwclock, en utilisant l'option –test, vous pouvez exécuter la commande sans vraiment apporter de modifications.

L'option –systz modifiera le fuseau horaire du système en conséquence. Mais, puisque nous avons donné -test, cela ne fera pas vraiment le changement, mais il exécutera toujours la commande sans aucun problème.

# hwclock --systz --test
Not setting system clock because running in test mode.

La meilleure utilisation du mode test est lorsque vous le combinez avec l'option de débogage. C'est-à-dire lorsque vous voulez voir ce que fait la commande hwclock, mais sans apporter de modifications.

# hwclock --systz --test --debug
hwclock from util-linux-ng 2.17.2
Last drift adjustment done at 1375975224 seconds after 1969
Last calibration done at 1375975224 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Current system time: 1375975586 = 2013/08/10 15:26:26
Calling settimeofday:
        UTC: 2013/08/10 15:26:26
        tv.tv_sec = 1375975586, tv.tv_usec = 556277
        tz.tz_minuteswest = 420
Not setting system clock because running in test mode.

Ce qui suit montre exactement ce que fait l'option –adjust sans vraiment faire d'ajustement.

# hwclock --adjust --test --debug
hwclock from util-linux-ng 2.17.2
Using /dev interface to clock.
Last drift adjustment done at 1375975224 seconds after 1969
Last calibration done at 1375975224 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2013/08/10 15:30:35
Hw clock time : 2013/08/10 15:30:35 = 1375975835 seconds since 1969
Time since last adjustment is 611 seconds
Need to insert -1 seconds and refer time back 0.978644 seconds ago
Needed adjustment is less than one second, so not setting clock.

Linux
  1. 8 exemples de commandes Quick Date sous Linux

  2. Tutoriel de commande de date Linux pour les débutants (8 exemples)

  3. Exemples de commande de temps Linux

  4. uptime Exemples de commandes sous Linux

  5. Linux :définir la date via la ligne de commande

Commande de date sous Linux avec des exemples d'utilisation

11 Exemples de commandes de date Linux utiles

Comment définir la date et l'heure sous Linux

7 exemples de commande de date sous Linux

Linux date Exemples de commandes

12 exemples de commandes de date Linux utiles