GNU/Linux >> Znalost Linux >  >> Linux

7 Linux hwclock Příklady příkazů pro nastavení hardwarových hodin Date Time

Hodiny spravované linuxovým jádrem nejsou stejné jako hardwarové hodiny.

Hardwarové hodiny běží, i když vypnete systém.

Hardwarové hodiny se také nazývají hodiny systému BIOS. Datum a čas hardwarových hodin můžete změnit v systému BIOS.

Když je však systém v provozu, stále můžete zobrazit a nastavit datum a čas hardwaru pomocí příkazu hwclock pro Linux, jak je vysvětleno v tomto tutoriálu.

1. Zobrazte datum a čas hardwarových hodin

Stačí zadat hwclock, který zobrazí datum a čas hardwarových hodin vašeho systému. Toto je stejné datum a čas, které uvidíte na obrazovce systému BIOS. Můžete také použít volbu -r nebo -show pro zobrazení data a času.

# 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

Poznámka:Výstup příkazu date může být stejný jako výstup příkazu hwclock (ve skutečnosti by měl být stejný). Příkaz date však získává datum a čas z hodin spravovaných z jádra Linuxu. V tomto příkladu je mezi nimi rozdíl asi 10 minut.

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

2. Zkopírovat čas systému do času hardwaru

Opravdu se chcete ujistit, že vaše hardwarové hodiny mají stejné datum a čas jako systémové.

Jak nyní vidíte, existuje rozdíl mezi systémovými hodinami a časem hardwarových hodin.

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

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

Takže pomocí příkazu hwclock, jak je znázorněno níže, nastavte hardwarové hodiny stejně jako systémové hodiny. Toto je typické použití příkazu 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

Poznámka:Obě volby -w a –systohc dělají totéž. Rád používám –systohc, protože je snadno zapamatovatelný. –systohc je zkratka pro „system to hardwarové hodiny“, což kopíruje čas ze systémových na hardwarové hodiny.

# hwclock --systohc

3. Nastavte datum a čas hardwarových hodin ručně

Namísto kopírování systémového data a času do hardwarových hodin můžete hodnotu také nastavit ručně pomocí možnosti –set a –date, jak je uvedeno níže.

Následující nastaví datum na 11. srpna 2013. Upozorňujeme, že pokud neuvedete čas, bude nastaven na 00:00.

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

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

Můžete také nastavit datum a čas současně, jak je uvedeno níže. Upozorňujeme, že ve výchozím nastavení bude používat místní čas.

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

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

Můžete také vzít výstup příkazu date a předat jej volbě –set a –date, jak je uvedeno níže.

# 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. Zkopírujte čas hardwaru do systémového času

Když vaše hardwarové hodiny ukazují správné datum a čas, ale ne vaše systémové hodiny, můžete použít volbu -s, jak je uvedeno níže, a zkopírovat hardwarový čas do systémového času, jak je znázorněno níže.

# 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

Poznámka:Volba -s i –hctosys dělá totéž. Rád používám –hctosys, protože je snadno zapamatovatelný. –hctosys znamená „hardware clock to system“, což kopíruje čas z hardwarových hodin do systémových.

# hwclock -hctosys

Pokud jste si při testování popletli systémový čas, můžete pomocí příkladů příkazu date nastavit správné datum a čas.

5. hwclock režim ladění

Když hwclock předáte volbu –debug, zobrazí se nějaké informace o ladění, které přesně ukazují, co příkaz hwclock dělá.

Následující text přesně ukazuje, co dělá, když zkopírujeme systémový čas do hardwarového času.

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

Následující text přesně ukazuje, co dělá, když kopírujeme čas hardwaru do systémového času.

# 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

Poznámka:Na počítačích alfa můžete použít getepoch k zobrazení epochy, setepoch k nastavení epochy. Když se to pokusíte spustit na počítači Alpha, zobrazí se následující chybový stroj.

# 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. Upravte hardwarové hodiny

Když se systém spustí, bere čas z hardwarových hodin. Soubor /etc/adjtime používá možnost hwclock –adjust k řízení úprav.

# hwclock --adjust

Soubor /etc/adjtime má následující tři řádky.

# cat /etc/adjtime
-3.019877 1375975224 0.000000
1375975224
UTC
  • Tři hodnoty v 1. řádku představují 1) systematickou rychlost posunu v sekundách za den, 2) počet sekund od poslední úpravy v roce 1969 UTC 3) pouze 0
  • Řádek 2 je stejná hodnota, jakou vidíte na 1. řádku a 2. hodnotě. tj. počet sekund od roku 1969 UTC poslední úpravy
  • Řádek 3 bude obsahovat UTC nebo LOCAL

7. hwclock testovací režim

Když změníte věci pomocí hwclock pomocí volby –test, můžete příkaz spustit, aniž byste skutečně provedli nějaké změny.

Možnost –systz odpovídajícím způsobem změní systémové časové pásmo. Ale protože jsme dali –test, ve skutečnosti neprovede změnu, ale stále provede příkaz bez jakýchkoli problémů.

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

Nejlepší využití testovacího režimu je, když jej zkombinujete s možností ladění. T.j. když chcete vidět, co dělá příkaz hwclock, ale bez provedení jakýchkoli změn.

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

Následující text přesně ukazuje, co dělá volba –adjust, aniž by skutečně prováděla jakékoli úpravy.

# 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. 7 Příklady příkazů Linux df

  2. 8 Příklady příkazů Linux TR

  3. 7 Linux Date Příklady příkazů pro zobrazení a nastavení systémového data a času

  1. Příklady příkazů hwclock v Linuxu

  2. Příklady příkazů date v Linuxu

  3. Příklady příkazů timedatectl v Linuxu

  1. 8 Příklady příkazů rychlého data v Linuxu

  2. Příklady příkazů uptime v Linuxu

  3. Linux:nastavte datum pomocí příkazového řádku