GNU/Linux >> Linux Esercitazione >  >> Linux

7 Esempi di comandi hwclock di Linux per impostare la data e l'ora dell'orologio hardware

L'orologio gestito dal kernel Linux non è lo stesso dell'orologio hardware.

L'orologio hardware funziona anche quando spegni il sistema.

L'orologio hardware è anche chiamato orologio BIOS. È possibile modificare la data e l'ora dell'orologio hardware dal BIOS.

Tuttavia, quando il sistema è attivo e funzionante, puoi comunque visualizzare e impostare la data e l'ora dell'hardware utilizzando il comando hwclock di Linux, come spiegato in questo tutorial.

1. Visualizza la data e l'ora dell'orologio hardware

Digita semplicemente hwclock, che visualizzerà la data e l'ora dell'orologio hardware del tuo sistema. Questa è la stessa data e ora che vedrai dalla schermata del BIOS. Puoi anche usare l'opzione -r o –show per visualizzare la data e l'ora.

# 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

Nota:l'output del comando date potrebbe essere lo stesso dell'output del comando hwclock (in realtà dovrebbe essere lo stesso). Tuttavia, il comando date ottiene la data e l'ora dall'orologio gestito dal kernel Linux. Ad esempio, ci sono circa 10 minuti di differenza tra loro.

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

2. Copia l'ora del sistema nell'ora dell'hardware

Vuoi davvero assicurarti che il tuo orologio hardware abbia la stessa data e ora dell'orologio di sistema.

Come puoi vedere attualmente c'è una differenza tra l'orologio di sistema e l'ora dell'orologio hardware.

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

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

Quindi, utilizzare il comando hwclock come mostrato di seguito per impostare l'orologio hardware come l'orologio di sistema. Questo è l'uso tipico del comando 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

Nota:entrambe le opzioni -w e –systohc fanno lo stesso. Mi piace usare –systohc perché è facile da ricordare. –systohc sta per "orologio dal sistema all'hardware", che copia l'ora dal sistema all'orologio hardware.

# hwclock --systohc

3. Imposta manualmente data e ora dell'orologio hardware

Invece di copiare la data e l'ora del sistema sull'orologio hardware, puoi anche impostare manualmente il valore usando l'opzione –set e –date come mostrato di seguito.

Quanto segue imposterà la data all'11 agosto 2013. Tieni presente che se non specifichi l'ora, sarà impostata alle 00:00:00.

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

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

È inoltre possibile impostare sia la data che l'ora contemporaneamente, come mostrato di seguito. Tieni presente che utilizzerà l'ora locale per impostazione predefinita.

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

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

Puoi anche prendere l'output del comando date e passarlo all'opzione –set e –date come mostrato di seguito.

# 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. Copia l'ora dell'hardware nell'ora di sistema

Quando l'orologio hardware mostra la data e l'ora corrette, ma non l'orologio di sistema, puoi utilizzare l'opzione -s come mostrato di seguito per copiare l'ora hardware nell'ora di sistema come mostrato di seguito.

# 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

Nota:entrambe le opzioni -s e –hctosys fanno lo stesso. Mi piace usare –hctosys perché è facile da ricordare. –hctosys sta per "orologio hardware al sistema", che copia l'ora dall'orologio hardware all'orologio di sistema.

# hwclock -hctosys

Durante il test, se hai incasinato l'ora del tuo sistema, puoi utilizzare gli esempi del comando date per impostarlo in modo che la data e l'ora siano corrette.

5. Modalità di debug hwclock

Quando si passa l'opzione –debug a hwclock, vengono visualizzate alcune informazioni di debug, che mostrano esattamente cosa fa il comando hwclock.

Quanto segue mostra esattamente cosa fa quando copiamo l'ora del sistema nell'ora dell'hardware.

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

Quanto segue mostra esattamente cosa fa quando copiamo l'ora dell'hardware nell'ora del sistema.

# 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

Nota:sulle macchine alfa puoi usare getepoch per visualizzare l'epoca, setepoch per impostare l'epoca. Quando provi a eseguirlo su una macchina Alpha, otterrai la seguente macchina di errore.

# 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. Regola l'orologio hardware

Quando il sistema si avvia, prende l'ora dall'orologio hardware. Il file /etc/adjtime viene utilizzato dall'opzione hwclock –adjust per controllare la regolazione.

# hwclock --adjust

Il file /etc/adjtime ha le seguenti tre righe.

# cat /etc/adjtime
-3.019877 1375975224 0.000000
1375975224
UTC
  • I tre valori nella prima riga rappresentano 1) tasso di deriva sistematico in secondi al giorno, 2) numero di secondi dal 1969 UTC di recente adeguamento 3) solo 0
  • La riga 2 è lo stesso valore che vedi nella prima riga, il secondo valore. ovvero il numero di secondi trascorsi dal 1969 UTC di recente adeguamento
  • La riga 3 indicherà UTC o LOCAL

7. Modalità test hwclock

Quando modifichi le cose usando hwclock, usando l'opzione –test, puoi eseguire il comando senza apportare modifiche.

L'opzione –systz cambierà il fuso orario del sistema di conseguenza. Ma, dal momento che abbiamo dato –test, non apporterà davvero la modifica, ma eseguirà comunque il comando senza problemi.

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

Il miglior uso della modalità test è quando la combini con l'opzione di debug. Cioè quando vuoi vedere cosa fa il comando hwclock, ma senza apportare modifiche.

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

Quanto segue mostra esattamente cosa fa l'opzione –adjust senza effettuare alcuna regolazione.

# 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 Esempi di comandi Quick Date in Linux

  2. Esempi di comandi temporali di Linux

  3. 8 Esempi di comandi TR Linux

  4. 7 Esempi di comandi della data di Linux per visualizzare e impostare la data e l'ora del sistema

  5. Esempi di comandi uptime in Linux

Comando Date in Linux con esempi di utilizzo

11 Esempi utili di comandi data di Linux

Come impostare data e ora su Linux

7 Esempi di comando Date in Linux

Esempi di comandi data di Linux

12 Esempi utili di comandi data di Linux