GNU/Linux >> LINUX-Kenntnisse >  >> Linux

7 Beispiele für hwclock-Befehle unter Linux zum Einstellen von Datum und Uhrzeit der Hardwareuhr

Die vom Linux-Kernel verwaltete Uhr ist nicht die gleiche wie die Hardware-Uhr.

Die Hardware-Uhr läuft auch dann, wenn Sie Ihr System herunterfahren.

Die Hardware-Uhr wird auch als BIOS-Uhr bezeichnet. Sie können das Datum und die Uhrzeit der Hardware-Uhr im BIOS ändern.

Wenn das System jedoch betriebsbereit ist, können Sie das Datum und die Uhrzeit der Hardware weiterhin mit dem Linux-Befehl hwclock anzeigen und einstellen, wie in diesem Tutorial erläutert.

1. Datum und Uhrzeit der Hardwareuhr anzeigen

Geben Sie einfach hwclock ein, das Datum und Uhrzeit der Hardwareuhr Ihres Systems anzeigt. Dies ist das gleiche Datum und die gleiche Uhrzeit, die Sie auf dem BIOS-Bildschirm sehen. Sie können auch die Option -r oder –show verwenden, um das Datum und die Uhrzeit anzuzeigen.

# 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

Hinweis:Die Ausgabe des date-Befehls kann mit der Ausgabe des hwclock-Befehls identisch sein (eigentlich sollte sie identisch sein). Der Datumsbefehl ruft jedoch das Datum und die Uhrzeit von der Uhr ab, die vom Linux-Kernel verwaltet wird. In diesem Beispiel gibt es einen Unterschied von etwa 10 Minuten zwischen ihnen.

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

2. Systemzeit in Hardwarezeit kopieren

Sie möchten wirklich sicherstellen, dass Ihre Hardwareuhr dasselbe Datum und dieselbe Uhrzeit wie die Systemuhr hat.

Wie Sie derzeit sehen, gibt es einen Unterschied zwischen der Systemuhr und der Hardwareuhrzeit.

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

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

Verwenden Sie also den Befehl hwclock wie unten gezeigt, um die Hardwareuhr auf die gleiche wie die Systemuhr einzustellen. Dies ist die typische Verwendung des hwclock-Befehls.

# hwclock -w

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

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

Hinweis:Sowohl die Optionen -w als auch –systohc bewirken dasselbe. Ich verwende gerne –systohc, da es leicht zu merken ist. –systohc steht für „System to Hardware Clock“, die die Zeit von der System- zur Hardware-Uhr kopiert.

# hwclock --systohc

3. Datum und Uhrzeit der Hardwareuhr manuell einstellen

Anstatt das Systemdatum und die Uhrzeit auf die Hardwareuhr zu kopieren, können Sie den Wert auch manuell mit den Optionen –set und –date wie unten gezeigt einstellen.

Im Folgenden wird das Datum auf den 11. August 2013 eingestellt. Bitte beachten Sie, dass es auf 00:00:00 Uhr eingestellt wird, wenn Sie die Uhrzeit nicht angeben.

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

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

Sie können Datum und Uhrzeit auch gleichzeitig einstellen, wie unten gezeigt. Bitte beachten Sie, dass standardmäßig die Ortszeit verwendet wird.

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

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

Sie können auch die Ausgabe des date-Befehls nehmen und wie unten gezeigt an die Optionen –set und –date übergeben.

# 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. Hardwarezeit in Systemzeit kopieren

Wenn Ihre Hardwareuhr das richtige Datum und die richtige Uhrzeit anzeigt, aber nicht Ihre Systemuhr, können Sie die Option -s wie unten gezeigt verwenden, um die Hardwarezeit wie unten gezeigt in die Systemzeit zu kopieren.

# 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

Hinweis:Sowohl die Optionen -s als auch –hctosys bewirken dasselbe. Ich verwende gerne –hctosys, da es leicht zu merken ist. –hctosys steht für „Hardware Clock to System“, wodurch die Uhrzeit von der Hardware-Uhr auf die Systemuhr kopiert wird.

# hwclock -hctosys

Wenn Sie beim Testen Ihre Systemzeit durcheinander gebracht haben, können Sie die Datumsbefehlsbeispiele verwenden, um sie auf das richtige Datum und die richtige Uhrzeit einzustellen.

5. hwclock Debug-Modus

Wenn Sie die Option –debug an hwclock übergeben, zeigt sie einige Debug-Informationen an, die genau zeigen, was der Befehl hwclock tut.

Das Folgende zeigt genau, was es tut, wenn wir die Systemzeit in die Hardwarezeit kopieren.

# 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.

Das Folgende zeigt genau, was es tut, wenn wir die Hardwarezeit in die Systemzeit kopieren.

# 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

Hinweis:Auf Alpha-Maschinen können Sie getepoch verwenden, um die Epoche anzuzeigen, setepoch, um die Epoche einzustellen. Wenn Sie versuchen, dies auf einer Alpha-Maschine auszuführen, erhalten Sie die folgende Fehlermaschine.

# 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. Stellen Sie die Hardware-Uhr ein

Wenn das System startet, nimmt es die Zeit von der Hardware-Uhr. Die Datei /etc/adjtime wird von der Option hwclock –adjust verwendet, um die Anpassung zu steuern.

# hwclock --adjust

Die Datei /etc/adjtime hat die folgenden drei Zeilen.

# cat /etc/adjtime
-3.019877 1375975224 0.000000
1375975224
UTC
  • Die drei Werte in der ersten Zeile repräsentieren 1) die systematische Driftrate in Sekunden pro Tag, 2) die Anzahl der Sekunden seit 1969 UTC der letzten Anpassung, 3) nur 0
  • Zeile 2 ist derselbe Wert, den Sie in der 1. Zeile sehen, 2. Wert. d.h. Anzahl der Sekunden seit 1969 UTC der letzten Anpassung
  • Zeile 3 sagt entweder UTC oder LOCAL

7. hwclock-Testmodus

Wenn Sie Dinge mit hwclock ändern, können Sie mit der Option –test den Befehl ausführen, ohne wirklich Änderungen vorzunehmen.

Die Option –systz ändert die Systemzeitzone entsprechend. Aber da wir –test gegeben haben, wird es die Änderung nicht wirklich vornehmen, aber es wird den Befehl trotzdem ohne Probleme ausführen.

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

Die beste Verwendung des Testmodus ist, wenn Sie ihn mit der Debug-Option kombinieren. Das heißt, wenn Sie sehen möchten, was der Befehl hwclock macht, aber keine Änderungen vornehmen.

# 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.

Das Folgende zeigt genau, was die Option –adjust macht, ohne wirklich eine Anpassung vorzunehmen.

# 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. Beispiele für Linux-Zeitbefehle

  2. 7 Beispiele für Linux-df-Befehle

  3. 8 Linux TR-Befehlsbeispiele

  4. 7 Beispiele für Linux-Datumsbefehle zum Anzeigen und Einstellen der Uhrzeit des Systemdatums

  5. hwclock-Befehlsbeispiele unter Linux

Datumsbefehl in Linux mit Verwendungsbeispielen

11 Nützliche Beispiele für Linux-Datumsbefehle

So stellen Sie Datum und Uhrzeit unter Linux ein

7 Beispiele für Datumsbefehle in Linux

Beispiele für Linux-Datumsbefehle

12 Nützliche Beispiele für Linux-Datumsbefehle