Provided by: util-linux-locales_2.41-4ubuntu3_all bug

NUME

       hwclock - instrument pentru administrarea ceasurilor

REZUMAT

       hwclock [funcția] [opțiune...]

DESCRIERE

       hwclock este un instrument de administrare pentru toate ceasurile sistemului. Acesta poate: afișa ora
       ceasului hardware (al componentelor fizice, practic al plăcii bază) ; stabili ceasul hardware la o oră
       specificată; stabili ceasul hardware de la ceasul de sistem (ceasul software); stabili ceasul de sistem
       de la ceasul hardware; compensa abaterea ceasului hardware; corecta scara de timp a ceasului de sistem;
       stabili fusul orar al nucleului, scara de timp NTP și epoca (numai pentru Alpha); și prezice viitoarele
       valori ale ceasului hardware pe baza ratei de abatere a acestuia.

       Începând cu versiunea v2.26, au fost aduse modificări importante funcției --hctosys și opțiunii
       --directisa și a fost adăugată o nouă opțiune --update-drift. A se vedea respectivele descrieri ale
       acestora mai jos.

FUNCȚII

       Următoarele funcții se exclud reciproc, se poate da doar una la un moment dat. Dacă nu este dată niciuna,
       valoarea implicită este --show.

       -a, --adjust
           Adaugă sau scade timpul din ceasul hardware pentru a ține cont de abaterea sistematică de la ultima
           dată când ceasul a fost stabilit sau ajustat. Consultați discuția de mai jos, la Funcția de reglare.

       --getepoch; --setepoch
           Aceste funcții sunt destinate numai mașinilor Alpha și sunt disponibile numai prin intermediul
           controlorului RTC din nucleul Linux.

           Acestea sunt utilizate pentru a citi și stabili valoarea epocii ceasului hardware al nucleului. Epoch
           este numărul de ani în AD la care se referă o valoare de an zero în ceasul hardware. De exemplu, dacă
           BIOS-ul mașinii stabilește contorul de ani din ceasul hardware pentru a conține numărul de ani
           întregi din 1952, atunci valoarea epocii ceasului hardware al nucleului trebuie să fie 1952.

           Funcția --setepoch necesită utilizarea opțiunii --epoch pentru a specifica anul. De exemplu:

           hwclock --setepoch --epoch=1952

           Controlorul RTC încearcă să ghicească valoarea corectă a epocii, astfel încât este posibil să nu fie
           necesară definirea acesteia.

           Această valoare de epocă este utilizată ori de câte ori hwclock citește sau stabilește ceasul
           hardware pe o mașină Alpha. Pentru mașinile ISA, nucleul utilizează epoca fixă a ceasului hardware de
           1900.

       --param-get=parametru; --param-set=parametru=valoare
           Citește și configurează parametrul RTC. Acest lucru este util, de exemplu, pentru a prelua funcția
           RTC sau pentru a configura modul de comutare de rezervă al RTC.

           parametru este fie o valoare numerică a parametrului RTC (a se vedea Kernel’s
           include/uapi/linux/rtc.h), fie un alias. Consultați --help pentru o listă de alias valide. parametru
           și valoare, dacă sunt prefixate cu 0x, sunt interpretate ca valori hexazecimale, în caz contrar
           valori zecimale.

       --predict
           Prevede ce va citi ceasul hardware în viitor pe baza orei date de opțiunea --date și a informațiilor
           din /etc/adjtime. Acest lucru este util, de exemplu, pentru a ține cont de abatere atunci când se
           configurează o trezire a ceasului hardware (adică alarmă). A se vedea rtcwake(8).

           Nu utilizați această funcție în cazul în care ceasul hardware este modificat de altceva decât de
           comanda hwclock a sistemului de operare curent, cum ar fi „11 minute mode” sau de un alt sistem de
           operare dual-boot.

       -r, --show; --get
           Citește ceasul hardware și imprimă ora acestuia la ieșirea standard în formatul ISO 8601. Ora afișată
           este întotdeauna în ora locală, chiar dacă aveți ceasul hardware în UTC. Consultați opțiunea
           --localtime.

           Afișarea orei ceasului hardware este implicită atunci când nu este specificată nicio funcție.

           Funcția --get aplică, de asemenea, o corecție de abatere la timpul citit, pe baza informațiilor din
           /etc/adjtime. Nu folosiți această funcție dacă ceasul hardware este modificat de altceva decât de
           comanda hwclock a sistemului de operare curent, cum ar fi „11 minute mode” sau de la un alt sistem de
           operare dual-boot.

       -s, --hctosys
           Stabilește ceasul de sistem de la ceasul hardware. Timpul citit de la ceasul hardware este compensat
           pentru a ține cont de abaterea sistematică înainte de a-l utiliza pentru a stabili ceasul sistemului.
           Consultați discuția de mai jos, la Funcția de reglare.

           Ceasul sistemului trebuie să fie menținut în scara de timp UTC pentru ca aplicațiile de dată-oră să
           funcționeze corect în combinație cu fusul orar configurat pentru sistem. În cazul în care ceasul
           hardware este menținut în ora locală, atunci ora citită de la acesta trebuie schimbată în scara de
           timp UTC înainte de a o utiliza pentru a stabili ceasul sistemului. Funcția --hctosys face acest
           lucru pe baza informațiilor din fișierul /etc/adjtime sau a argumentelor din linia de comandă
           --localtime și --utc. Notă: nu se face nicio ajustare a orei de vară. A se vedea discuția de mai jos,
           la LOCAL vs UTC.

           Nucleul păstrează, de asemenea, o valoare a fusului orar, iar funcția --hctosys o stabilește la fusul
           orar configurat pentru sistem. Fusul orar al sistemului este configurat de variabila de mediu TZ sau
           de fișierul /etc/localtime, așa cum le-ar interpreta tzset(3). Câmpul învechit tz_dsttime al valorii
           fusului orar din kernel este fixat la zero. (Pentru detalii despre ce însemna acest câmp, consultați
           settimeofday(2).)

           Atunci când este utilizată într-un script de pornire, făcând funcția --hctosys primul apelant al
           settimeofday(2) de la pornire, aceasta va stabili scara de timp NTP „11 minute mode” prin intermediul
           variabilei nucleului persistent_clock_is_local. În cazul în care se modifică configurația scării
           temporale a ceasului hardware, este necesară o repornire pentru a informa nucleul. A se vedea
           discuția de mai jos, la Sincronizarea automată a ceasului hardware de către nucleu.

           Aceasta este o funcție bună de utilizat într-unul dintre scripturile de pornire a sistemului înainte
           ca sistemele de fișiere să fie montate în regim de citire/scriere.

           Această funcție nu trebuie utilizată niciodată pe un sistem în funcțiune. Salturile în ora sistemului
           vor cauza probleme, cum ar fi marcaje de timp ale sistemului de fișiere corupte. De asemenea, dacă
           ceva a modificat ceasul hardware, cum ar fi „modul 11 minute” al NTP, atunci --hctosys va stabili
           timpul în mod incorect prin includerea compensării abaterii.

           Compensarea abaterii poate fi inhibată prin definirea factorului de abatere în /etc/adjtime la zero.
           Această valoare va fi persistentă atâta timp cât opțiunea --update-drift nu este utilizată cu
           --systohc la închiderea sistemului (sau oriunde altundeva). O altă modalitate de a inhiba acest lucru
           este utilizarea opțiunii --noadjfile la apelarea funcției --hctosys. O a treia metodă constă în
           ștergerea fișierului /etc/adjtime. hwclock va utiliza în mod implicit scara de timp UTC pentru ceasul
           hardware. În cazul în care ceasul hardware are ora locală, aceasta va trebui definită în fișier.
           Acest lucru se poate face prin apelarea hwclock --localtime --adjust; în cazul în care fișierul nu
           este prezent, această comandă nu va ajusta efectiv ceasul, dar va crea fișierul cu ora locală
           configurată și cu un factor de deviație de zero.

           O condiție în care se poate dori inhibarea corecției de abatere a hwclock poate fi dorită atunci când
           se face o dublă pornire a mai multor sisteme de operare. Dacă în timp ce această instanță de Linux
           este oprită, un alt sistem de operare modifică valoarea ceasului hardware, atunci când această
           instanță este repornită, corecția de abatere aplicată va fi incorectă.

           Pentru ca corecția de abatere a hwclock să funcționeze corect, este imperativ ca nimic să nu modifice
           ceasul hardware în timp ce instanța sa Linux nu rulează.

       --set
           Stabilește ceasul hardware la ora indicată de opțiunea --date și actualizează marcajele de timp din
           /etc/adjtime. Cu opțiunea --update-drift se (re)calculează, de asemenea, factorul de abatere.
           Încercați fără opțiunea --set dacă --set nu reușește. A se vedea --update-drift de mai jos.

       --systz
           Aceasta este o alternativă la funcția --hctosys, care nu citește ceasul hardware și nici nu
           stabilește ceasul de sistem; în consecință, nu există nicio corecție a abaterii. Această funcție este
           destinată utilizării într-un script de pornire pe sisteme cu nuclee mai mari de versiunea 2.6, în
           cazul în care știți că ceasul de sistem a fost stabilit de către nucleu în timpul pornirii de la
           ceasul hardware.

           Aceasta face următoarele lucruri care sunt detaliate mai sus în funcția --hctosys:

           •   Corectează scara de timp a ceasului de sistem la UTC, după cum este necesar. Numai că, în loc să
               realizeze acest lucru prin stabilirea ceasului de sistem, hwclock informează pur și simplu
               nucleul, iar acesta se ocupă de schimbare.

           •   Stabilește scara de timp NTP a nucleului în „11 minute mode”.

           •   Stabilește fusul orar al nucleului.

       Primele două sunt disponibile numai la primul apel al settimeofday(2) după pornire. În consecință,
       această opțiune are sens doar atunci când este utilizată într-un script de pornire. În cazul în care se
       modifică configurația intervalului de timp al ceasurilor hardware, ar fi necesară o repornire pentru a
       informa nucleul.

       -w, --systohc
           Stabilește ceasul hardware de la ceasul de sistem și actualizează marcajele de timp din /etc/adjtime.
           Cu opțiunea --update-drift, (re)calculează, de asemenea, factorul de abatere. Încercați fără opțiunea
           --systohc dacă --systohc eșuează. A se vedea --update-drift mai jos.

       --vl-read, --vl-clear
           Unele dispozitive RTC sunt capabile să monitorizeze tensiunea bateriei de rezervă și, astfel, oferă
           utilizatorului o modalitate de a ști că bateria trebuie înlocuită. Funcția --vl-read recuperează
           informațiile privind tensiunea scăzută și decodifică rezultatul într-o formă lizibilă pentru oameni.
           Funcția --vl-clear repune la zero informațiile privind tensiunea scăzută „Voltage Low”, ceea ce este
           necesar pentru unele dispozitive RTC după înlocuirea bateriei.

           Consultați fișierul nucleului include/uapi/linux/rtc.h pentru detalii privind informațiile care pot
           fi returnate. Rețineți că nu toate dispozitivele RTC au această capacitate de monitorizare și nici
           toți controlorii nu acceptă neapărat citirea informațiilor.

       -h, --help
           Afișează acest mesaj de ajutor și iese.

       -V, --version
           Afișează versiunea și iese.

OPȚIUNI

       --adjfile=nume-fișier
           Suprascrie ruta implicită a fișierului /etc/adjtime.

       --date=șir_dată
           Această opțiune trebuie să fie utilizată împreună cu funcțiile --set sau --predict, în caz contrar
           este ignorată.

           hwclock --set --date='16:45'

           hwclock --predict --date='2525-08-14 07:11:05'

           Argumentul trebuie să fie în ora locală, chiar dacă aveți ceasul hardware în UTC. Consultați opțiunea
           --localtime. Prin urmare, argumentul nu trebuie să includă informații despre fusul orar. De asemenea,
           nu ar trebui să fie o oră relativă, cum ar fi „+5 minutes”, deoarece precizia hwclock depinde de
           corelația dintre valoarea argumentului și momentul în care este apăsată tasta enter. Secundele
           fracționare sunt eliminate în mod silențios. Această opțiune este capabilă să înțeleagă multe formate
           de oră și dată, dar trebuie respectați parametrii anteriori.

       --delay=secunde
           Această opțiune poate fi utilizată pentru a suprascrie întârzierea utilizată intern la stabilirea
           orei ceasului. Valoarea implicită este 0,5 (500ms) pentru rtc_cmos, iar pentru alte tipuri de RTC
           întârzierea este 0. Dacă tipul de RTC este imposibil de determinat (din sysfs), atunci valoarea
           implicită este de asemenea 0,5 pentru a fi compatibilă retroactiv.

           Valoarea implicită de 500 ms se bazează pe ceasul hardware compatibil MC146818A (x86) utilizat în mod
           obișnuit. Acest ceas hardware poate fi stabilit numai la orice timp întreg plus o jumătate de
           secundă. Timpul întreg este necesar deoarece nu există o interfață pentru a defini sau a obține o
           fracțiune de secundă. Întârzierea suplimentară de o jumătate de secundă se datorează faptului că
           ceasul hardware se actualizează la următoarea secundă exact la 500 ms după ce stabilește noua oră.
           Din păcate, acest comportament este specific hardware-ului și, în unele cazuri, este necesară o altă
           întârziere.

       -D, --debug
           Utilizează --verbose. Opțiunea --debug a fost depășită și poate fi reformulată sau eliminată într-o
           versiune viitoare.

       --directisa
           Această opțiune este semnificativă pentru mașinile compatibile ISA din familia x86 și x86_64. Pentru
           alte mașini, nu are niciun efect. Această opțiune îi indică lui hwclock să utilizeze instrucțiuni de
           In/Ieș explicite pentru a accesa ceasul hardware. Fără această opțiune, hwclock va utiliza fișierul
           de dispozitiv rtc, despre care presupune că este condus de controlorul de dispozitiv RTC din Linux.
           Începând cu versiunea v2.26, nu va mai utiliza automat „directisa” atunci când controlorul rtc nu
           este disponibil; acest lucru cauza o situație nesigură care putea permite ca două procese să acceseze
           ceasul hardware în același timp. Accesul direct la hardware din spațiul utilizatorului trebuie
           utilizat numai pentru testare, depanare și ca ultimă soluție atunci când toate celelalte metode
           eșuează. Consultați opțiunea --rtc.

       --epoch=anul
           Această opțiune este necesară atunci când se utilizează funcția --setepoch. Valoarea minimă pentru
           anul este 1900. Valoarea maximă depinde de sistem (ULONG_MAX - 1).

       -f, --rtc=nume-fișier
           Suprascrie numele implicit al fișierului rtc al dispozitivului hwclock. În caz contrar, se va utiliza
           primul găsit în această ordine: /dev/rtc0, /dev/rtc, /dev/misc/rtc. Pentru IA-64: /dev/efirtc
           /dev/misc/efirtc

       -l, --localtime; -u, --utc
           Indică la ce scară de timp este stabilit ceasul hardware.

           Ceasul hardware poate fi configurat pentru a utiliza fie UTC, fie scara de timp locală, însă ceasul
           nu indică ce alternativă este utilizată. Opțiunile --localtime sau --utc oferă aceste informații
           comenzii hwclock. Dacă o specificați pe cea greșită (sau nu specificați niciuna dintre ele și luați o
           valoare implicită greșită), atât configurarea cât și citirea ceasului hardware vor fi incorecte.

           Dacă nu specificați nici --utc, nici --localtime, atunci se va utiliza ultima dată cu o funcție de
           stabilire (--set, --systohc, sau --adjust), așa cum este înregistrată în /etc/adjtime. În cazul în
           care fișierul „adjtime” nu există, valoarea implicită este UTC.

           Notă: modificările orei de vară pot fi incoerente atunci când ceasul hardware este menținut la ora
           locală. Consultați discuția de mai jos, la LOCAL vs UTC.

       --noadjfile
           Dezactivează facilitățile oferite de /etc/adjtime. hwclock nu va citi și nici nu va scrie în acel
           fișier cu această opțiune. Atunci când se utilizează această opțiune, trebuie specificate fie --utc,
           fie --localtime.

       --test
           Nu modifică efectiv nimic în sistem, adică ceasurile sau /etc/adjtime (--verbose este implicit cu
           această opțiune).

       --update-drift
           Actualizează factorul de abatere al ceasului hardware în /etc/adjtime. Poate fi utilizată numai cu
           --set sau --systohc.

           Este necesară o perioadă minimă de patru ore între ajustări. Acest lucru este pentru a evita
           calculele nevalide. Cu cât perioada este mai lungă, cu atât mai precis va fi factorul de abatere
           rezultat.

           Această opțiune a fost adăugată în v2.26, deoarece este obișnuit ca sistemele să apeleze hwclock
           --systohc la închidere; cu vechiul comportament, acest lucru ar fi (re)calculat automat factorul de
           abatere, ceea ce cauzează mai multe probleme:

           •   În cazul în care se utilizează NTP cu un nucleu „11 minute mode”, factorul de abatere va fi redus
               la aproape zero.

           •   Aceasta nu ar permite utilizarea corecției de abatere „la rece”. În cazul majorității
               configurațiilor, utilizarea abaterii „la rece” va da rezultate favorabile. La rece înseamnă
               atunci când mașina este oprită, ceea ce poate avea un impact semnificativ asupra factorului de
               abatere.

           •   (Re)calcularea factorului de abatere la fiecare oprire oferă rezultate nesatisfăcătoare. De
               exemplu, în cazul în care condițiile efemere fac ca mașina să fie anormal de fierbinte, calculul
               factorului de abatere ar fi în afara intervalului.

           •   Creșterea semnificativă a timpului de oprire a sistemului (începând cu v2.31, când nu se
               utilizează --update-drift, RTC nu este citit).

       Calcularea factorului de abatere de către hwclock este un bun punct de plecare, dar pentru rezultate
       optime va trebui probabil să fie ajustat prin editarea directă a fișierului /etc/adjtime. Pentru
       majoritatea configurațiilor, odată ce factorul de abatere optim al mașinii este creat, nu ar trebui să
       fie nevoie să fie modificat. Prin urmare, vechiul comportament de (re)calculare automată a abaterii a
       fost modificat și acum necesită utilizarea acestei opțiuni. A se vedea discuția de mai jos, la Funcția de
       ajustare.

       Această opțiune necesită citirea ceasului hardware înainte de a-l ajusta. Dacă acesta nu poate fi citit,
       atunci această opțiune va face ca funcțiile de stabilire să eșueze. Acest lucru se poate întâmpla, de
       exemplu, dacă ceasul hardware este corupt de o pană de curent. În acest caz, ceasul trebuie mai întâi
       stabilit fără această opțiune. În ciuda faptului că nu funcționează, factorul de corecție a abaterii
       rezultat ar fi oricum nevalid.

       -v, --verbose
           Afișează mai multe detalii despre ceea ce face hwclock la nivel intern.

NOTE

   Ceasuri într-un sistem Linux
       Există două tipuri de ceasuri cu dată și oră:

       •   Ceasul hardware:* Acest ceas este un dispozitiv fizic independent, cu propriul său domeniu de
           alimentare (baterie, condensator etc.), care funcționează atunci când mașina este oprită sau chiar
           deconectată.

       Pe un sistem compatibil ISA, acest ceas este specificat ca parte a standardului ISA. Un program de
       control poate citi sau stabili acest ceas doar la o secundă întreagă, dar poate detecta și marginile
       ticurilor de ceas de 1 secundă, astfel încât ceasul are de fapt o precizie practic infinită.

       Acest ceas este numit în mod obișnuit ceas hardware, ceas de timp real, RTC, ceas BIOS și ceas CMOS.
       Ceasul hardware (Hardware Clock), în forma sa cu majusculă, a fost inventat pentru a fi folosit de
       hwclock. De asemenea, nucleul Linux se referă la acesta ca fiind ceasul persistent.

       Unele sisteme non-ISA au câteva ceasuri în timp real, doar unul dintre ele având propriul domeniu de
       alimentare. Un cip de ceas extern I2C sau SPI de foarte mică putere poate fi utilizat cu o baterie de
       rezervă ca ceas fizic (hardware) pentru a inițializa un ceas în timp real integrat mai funcțional, care
       este utilizat în majoritatea celorlalte scopuri.

       •   Ceasul de sistem:* Acest ceas face parte din nucleul Linux și este controlat de o întrerupere a
           temporizatorului. (Pe o mașină ISA, întreruperea temporizatorului face parte din standardul ISA.)
           Acesta are semnificație doar în timp ce Linux rulează pe mașină. Ora sistemului este numărul de
           secunde de la 00:00:00:00 1 ianuarie 1970 UTC (sau, mai pe scurt, numărul de secunde de la 1969 UTC).
           Totuși, Ora sistemului nu este un număr întreg. Are o precizie practic infinită.

       Timpul sistemului este timpul care contează. Scopul de bază al ceasului hardware este de a păstra timpul
       atunci când Linux nu rulează, astfel încât ceasul de sistem să poată fi inițializat de la acesta la
       pornire. Rețineți că în DOS, pentru care a fost proiectat ISA, ceasul fizic (Hardware Clock) este
       singurul ceas de timp real.

       Este important ca ora sistemului să nu prezinte discontinuități, așa cum s-ar întâmpla dacă ați folosi
       programul date(1) pentru a o stabili în timp ce sistemul este în funcțiune. Cu toate acestea, puteți face
       orice doriți cu ceasul hardware în timp ce sistemul este în funcțiune, iar data următoare când Linux va
       porni, o va face cu ora ajustată de la ceasul hardware. Notă: în prezent, acest lucru nu este posibil pe
       majoritatea sistemelor, deoarece hwclock --systohc este apelat la închidere.

       Fusul orar al nucleului Linux este stabilit de hwclock. Dar nu vă lăsați înșelați - aproape nimănui nu-i
       pasă în ce fus orar crede nucleul că se află. În schimb, programele cărora le pasă de fusul orar (poate
       pentru că vor să vă afișeze ora locală) folosesc aproape întotdeauna o metodă mai tradițională de
       determinare a fusului orar: Ele utilizează variabila de mediu TZ sau fișierul /etc/localtime, așa cum se
       explică în pagina de manual pentru tzset(3). Cu toate acestea, unele programe și părți marginale ale
       nucleului Linux, cum ar fi sistemele de fișiere, utilizează valoarea fusului orar al nucleului. Un
       exemplu este sistemul de fișiere vfat. Dacă valoarea fusului orar din nucleu este greșită, sistemul de
       fișiere vfat va raporta și va defini marcaje de timp greșite pe fișiere. Un alt exemplu este "modul 11
       minute" NTP al nucleului. Dacă valoarea fusului orar din nucleu și/sau variabila
       persistent_clock_is_local sunt greșite, atunci ceasul hardware va fi stabilit incorect de către '11
       minute mode'. A se vedea discuția de mai jos, la Sincronizarea automată a ceasului hardware de către
       nucleu.

       hwclock stabilește fusul orar al nucleului la valoarea indicată de TZ sau /etc/localtime cu ajutorul
       funcțiilor --hctosys sau --systz.

       Valoarea fusului orar al nucleului este de fapt formată din două părți: 1) un câmp tz_minuteswest, care
       indică cu câte minute este decalată ora locală (neajustată pentru DST) față de UTC, și 2) un câmp
       tz_dsttime, care indică tipul de convenție privind ora de vară (DST) care este în vigoare în localitate
       la ora actuală. Acest al doilea câmp nu este utilizat în Linux și este întotdeauna zero. A se vedea, de
       asemenea, settimeofday(2).

   Metode de accesare a ceasului hardware
       hwclock utilizează mai multe moduri diferite de a obține și stabili valorile ceasului hardware. Cea mai
       normală modalitate este de a face In/Ieș către fișierul special al dispozitivului rtc, care se presupune
       că este condus de controlorul dispozitivului rtc. De asemenea, sistemele Linux care utilizează cadrul rtc
       cu udev, sunt capabile să suporte mai multe ceasuri hardware. Acest lucru poate determina necesitatea de
       a suprascrie dispozitivul rtc implicit prin specificarea unuia, cu opțiunea --rtc.

       Cu toate acestea, această metodă nu este întotdeauna disponibilă, deoarece sistemele mai vechi nu dispun
       de un controlor rtc. Pe aceste sisteme, metoda de accesare a ceasului hardware depinde de componentele
       fizice ale sistemului.

       Pe un sistem compatibil ISA, hwclock poate accesa direct registrele de „memorie CMOS” care constituie
       ceasul, făcând In/Ieș la porturile 0x70 și 0x71. Face acest lucru cu instrucțiuni In/Ieș reale și, în
       consecință, poate face acest lucru numai dacă rulează cu userid efectiv de superutilizator. Această
       metodă poate fi utilizată prin specificarea opțiunii --directisa.

       Aceasta este o metodă foarte proastă de accesare a ceasului, din toate motivele pentru care programele
       din spațiul utilizatorului nu ar trebui, în general, să facă In/Ieș direct și să dezactiveze
       întreruperile. hwclock o oferă pentru testare, depanare și pentru că poate fi singura metodă disponibilă
       pe sistemele ISA care nu au un controlor de dispozitiv rtc funcțional.

   Funcția de reglare
       Ceasul hardware nu este, de obicei, foarte precis. Cu toate acestea, o mare parte din inexactitatea sa
       este complet previzibilă - acesta câștigă sau pierde aceeași cantitate de timp în fiecare zi. Acest lucru
       se numește abatere sistematică. Funcția --adjust a hwclock vă permite să aplicați corecții de abatere
       sistematică la ceasul hardware.

       Aceasta funcționează în felul următor: hwclock deține un fișier, /etc/adjtime, care păstrează unele
       informații istorice. Acesta se numește fișierul adjtime.

       Să presupunem că începeți fără niciun fișier adjtime. Emiteți o comandă hwclock --set pentru a fixa
       ceasul hardware la ora curentă reală. hwclock creează fișierul adjtime și înregistrează în el ora curentă
       ca ultima dată când ceasul a fost calibrat. Cinci zile mai târziu, ceasul a câștigat 10 secunde, așa că
       emiteți o comandă hwclock --set --update-drift pentru a-l da înapoi cu 10 secunde. hwclock actualizează
       fișierul adjtime pentru a afișa ora curentă ca ultima dată când ceasul a fost calibrat și înregistrează 2
       secunde pe zi ca rată de abatere sistematică. Trec 24 de ore, iar apoi emiteți o comandă hwclock
       --adjust. hwclock consultă fișierul adjtime și constată că ceasul câștigă 2 secunde pe zi atunci când
       este lăsat în pace și că a fost lăsat în pace exact o zi. Deci, scade 2 secunde din ceasul hardware. Apoi
       înregistrează ora curentă ca fiind ultima dată când ceasul a fost ajustat. Mai trec 24 de ore și se emite
       un alt hwclock --adjust. hwclock face același lucru: scade 2 secunde și actualizează fișierul adjtime cu
       ora curentă ca fiind ultima dată când ceasul a fost ajustat.

       Atunci când utilizați opțiunea --update-drift cu --set sau --systohc, rata de abatere sistematică este
       (re)calculată prin compararea orei curente a ceasului hardware complet corectate pentru abatere cu noua
       oră stabilită, de la care se obține rata de abatere pe 24 de ore pe baza ultimei date de timp calibrate
       din fișierul „adjtime”. Acest factor de abatere actualizat este apoi salvat în /etc/adjtime.

       O mică cantitate de eroare se strecoară atunci când este stabilit ceasul hardware (Hardware Clock), așa
       că --adjust se abține de la orice ajustare mai mică de 1 secundă. Mai târziu, când solicitați din nou o
       ajustare, abaterea acumulată va fi mai mare de 1 secundă, iar --adjust va efectua ajustarea, inclusiv
       orice cantitate fracționară.

       hwclock --hctosys utilizează, de asemenea, datele din fișierul adjtime pentru a compensa valoarea citită
       de la ceasul hardware înainte de a o utiliza pentru a stabili ceasul sistemului. Nu împărtășește
       limitarea de 1 secundă a --adjust și va corecta imediat valorile de abatere sub o secundă. Nu modifică
       ora ceasului hardware și nici fișierul „adjtime”. Acest lucru poate elimina necesitatea de a utiliza
       --adjust, cu excepția cazului în care altceva în sistem necesită compensarea ceasului hardware.

   Fișierul adjtime
       În timp ce este numit pentru scopul său istoric de a controla doar ajustările, el conține de fapt alte
       informații utilizate de hwclock de la o invocare la alta.

       Formatul fișierului „adjtime” este, în ASCII:

       Linia 1: Trei numere, separate prin spații libere: 1) rata de abatere sistematică în secunde pe zi, număr
       zecimal cu virgulă mobilă; 2) numărul rezultat de secunde din 1969 UTC de la cea mai recentă ajustare sau
       calibrare, număr întreg zecimal; 3) zero (pentru compatibilitate cu clock(8)) ca număr zecimal cu virgulă
       mobilă.

       Linia 2: Un număr: numărul de secunde rezultat din 1969 UTC de la cea mai recentă calibrare. Zero în
       cazul în care nu a avut loc încă nicio calibrare sau se știe că orice calibrare anterioară este inutilă
       (de exemplu, deoarece s-a constatat că ceasul hardware nu mai conține o oră valabilă de la acea
       calibrare). Acesta este un număr întreg zecimal.

       Linia 3: "UTC" sau "LOCAL". Indică dacă ceasul hardware este stabilit la timpul universal coordonat sau
       la ora locală. Puteți oricând să înlocuiți această valoare cu opțiunile din linia de comandă hwclock.

       Puteți utiliza un fișier „adjtime” care a fost utilizat anterior cu programul clock(8) cu hwclock.

   Sincronizarea automată a ceasului hardware de către nucleu
       Ar trebui să știți că există un alt mod în care ceasul hardware (Hardware Clock) este menținut
       sincronizat în unele sisteme. Nucleul Linux are un mod în care copiază ora sistemului în ceasul hardware
       la fiecare 11 minute. Acest mod este o opțiune de compilare, astfel încât nu toate nucleele vor avea
       această capacitate. Acesta este un mod bun de utilizat atunci când folosiți ceva sofisticat, cum ar fi
       NTP, pentru a menține ceasul de sistem sincronizat. (NTP este o modalitate de a menține sincronizată ora
       de sistem fie cu un server de timp undeva în rețea, fie cu un ceas radio conectat la sistemul
       dumneavoastră. Consultați RFC 1305.)

       Dacă nucleul este compilat cu opțiunea „11 minute mode”, aceasta va fi activă atunci când disciplina de
       ceas a nucleului se află într-o stare de sincronizare. Când se află în această stare, bitul 6 (bitul care
       este setat în masca 0x0040) din variabila time_status a nucleului este dezactivat. Această valoare este
       afișată ca linie „status” (de stare) a comenzilor adjtimex --print sau ntptime.

       Este nevoie de o influență externă, cum ar fi demonul NTP, pentru a pune disciplina ceasului din nucleu
       într-o stare de sincronizare și, prin urmare, pentru a activa „modul 11 minute”. Acesta poate fi
       dezactivat prin rularea oricărui lucru care ajustează ceasul de sistem în mod tradițional, inclusiv
       hwclock --hctosys. Cu toate acestea, dacă demonul NTP este încă în funcțiune, acesta va activa din nou
       „modul 11 minute” la următoarea sincronizare a ceasului de sistem.

       Dacă sistemul dvs. funcționează cu „modul 11 minute” activat, este posibil să fie necesar să folosiți
       --hctosys sau --systz într-un script de pornire, în special dacă ceasul hardware este configurat să
       folosească scara de timp locală. Dacă nucleul nu este informat despre ce scară de timp folosește ceasul
       hardware, este posibil să o folosească pe cea greșită. În mod implicit, nucleul utilizează UTC.

       Prima comandă din spațiul utilizatorului de stabilire a ceasului de sistem informează nucleul cu privire
       la scara de timp pe care o folosește ceasul hardware. Acest lucru se întâmplă prin intermediul variabilei
       nucleului persistent_clock_is_local. Dacă --hctosys sau --systz este prima, aceasta va defini această
       variabilă în funcție de fișierul adjtime sau de argumentul corespunzător din linia de comandă. Rețineți
       că, atunci când se utilizează această capacitate și se modifică configurarea scării temporale a ceasului
       hardware, este necesară o repornire pentru a notifica nucleul.

       hwclock --adjust nu ar trebui să fie utilizată cu „modul 11 minute” NTP.

   Valoarea secolului pentru ceasul hardware ISA
       Există un fel de standard care definește octetul 50 al memoriei CMOS pe o mașină ISA ca indicator al
       secolului în care ne aflăm. hwclock nu utilizează sau configurează acel octet deoarece există unele
       mașini care nu definesc octetul în acest mod și, oricum, nu este necesar, deoarece anul secolului face o
       treabă bună în ceea ce privește indicarea secolului în care ne aflăm.

       Dacă aveți o utilizare de bună credință pentru un octet de secol CMOS, contactați responsabilul hwclock;
       o opțiune poate fi potrivită.

       Rețineți că această secțiune este relevantă numai atunci când utilizați metoda „direct ISA” de accesare a
       ceasului hardware. ACPI oferă o modalitate standard de accesare a valorilor de secol, atunci când acestea
       sunt acceptate de hardware.

CONFIGURAREA DATEI ȘI A OREI

   Gestionarea timpului (dată+oră) fără sincronizare externă
       Această discuție se bazează pe următoarele condiții:

       •   Nu rulează nimic care să modifice data și ora ceasurilor, cum ar fi un daemon NTP sau un cron job (o
           sarcină programată în demonul «cron»).

       •   Fusul orar al sistemului este configurat pentru ora locală corectă. A se vedea mai jos, la POSIX vs
           „CORECT”.

       •   La începutul pornirii sunt apelate următoarele, în această ordine: adjtimex --tick valoare
           --frequency valoare hwclock --hctosys

       •   În timpul închiderii (opriri sistemului), se apelează următoarea comandă: hwclock --systohc

           •   Sistemele care nu dispun de adjtimex pot utiliza ntptime.

       Indiferent dacă mențineți sau nu ora exactă cu ajutorul daemonului NTP, este logic să configurați
       sistemul pentru a menține o dată și o oră relativ bune pe cont propriu.

       Primul pas pentru a face acest lucru este să înțelegem clar care este situația în ansamblu. Există două
       dispozitive hardware complet separate care funcționează la propria viteză și care se îndepărtează de
       timpul „corect” în ritmuri proprii. Metodele și software-ul de corecție a abaterii sunt diferite pentru
       fiecare dintre ele. Cu toate acestea, majoritatea sistemelor sunt configurate pentru a face schimb de
       valori între aceste două ceasuri la pornire și la oprire. Acum, erorile de păstrare a timpului ale
       fiecărui dispozitiv în parte sunt transferate între ele. Încercați să configurați corecția abaterii doar
       pentru unul dintre ele, iar abaterea celuilalt se va suprapune peste aceasta.

       Această problemă poate fi evitată atunci când se configurează corecția de abatere pentru ceasul de
       sistem, prin simpla ne-oprire a mașinii. Acest lucru, plus faptul că toată precizia hwclock (inclusiv
       calcularea factorilor de abatere) depinde de corectitudinea ritmului ceasului de sistem, înseamnă că ar
       trebui să se facă mai întâi configurarea ceasului de sistem.

       Abaterea ceasului de sistem este corectată cu ajutorul opțiunilor --tick și --frequency a comenzii
       adjtimex(8). Aceste două opțiuni funcționează împreună: „--tick” este ajustarea grosieră, iar
       „--frequency” este ajustarea fină (pentru sistemele care nu au un pachet adjtimex, se poate folosi în
       schimb ntptime -f ppm).

       Unele distribuții Linux încearcă să calculeze automat abaterea ceasului de sistem cu ajutorul operației
       de comparare a adjtimex. Încercarea de a corecta un ceas cu abatere folosind ca referință un alt ceas cu
       abatere, se aseamănă cu un câine care încearcă să-și prindă propria coadă. Succesul poate avea loc în
       cele din urmă, dar probabil că va fi precedat de un efort mare și de frustrări. Această automatizare
       poate aduce o îmbunătățire față de absența oricărei configurații, dar așteptarea unor rezultate optime ar
       fi o eroare. O alegere mai bună pentru configurarea manuală ar fi opțiunile --log de la adjtimex.

       Ar putea fi mai eficient să urmăriți pur și simplu abaterea ceasului de sistem cu sntp, sau date -Ins și
       un ceas de precizie, apoi să calculați manual corecția.

       După ce ați stabilit valorile pentru „--tick” și cele pentru „-frequency”, continuați să testați și să
       rafinați ajustările până când ceasul de sistem se menține potrivit. Consultați adjtimex(2) pentru mai
       multe informații și exemplul care demonstrează calculele de abatere manuală.

       Odată ce ceasul de sistem (System Clock) funcționează fără probleme, treceți la ceasul hardware (Hardware
       Clock).

       De regulă, abaterea la rece va funcționa cel mai bine pentru majoritatea cazurilor de utilizare. Acest
       lucru ar trebui să fie valabil chiar și în cazul mașinilor care funcționează 24/7 și a căror perioadă
       normală de oprire constă într-o repornire. În acest caz, valoarea factorului de abatere are o importanță
       redusă. Dar, în rarele ocazii în care mașina este oprită pentru o perioadă lungă de timp, atunci abaterea
       la rece ar trebui să dea rezultate mai bune.

       •   Pașii pentru a calcula deriva la rece: *

           1
               Asigurați-vă  demonul NTP nu va fi lansat la pornire.

           2
               Ora System Clock (ceasului de sistem) trebuie să fie corectă la oprire!

           3
               Închideți(opriți) sistemul.

           4
               Lăsați să treacă o perioadă îndelungată fără a modifica ceasul hardware.

           5
               Porniți sistemul.

           6
               Utilizați imediat hwclock pentru a stabili ora corectă, adăugând opțiunea --update-drift.

       Notă: dacă la pasul 6 se utilizează --systohc, atunci ceasul sistemului trebuie stabilit corect (pasul
       6a) chiar înainte de a face acest lucru.

       Calcularea factorului de abatere de către hwclock este un bun punct de plecare, dar pentru rezultate
       optime va trebui probabil să fie ajustat prin editarea directă a fișierului /etc/adjtime. Continuați să
       testați și să rafinați factorul de abatere până când ceasul hardware este corectat corect la pornire.
       Pentru a verifica acest lucru, asigurați-vă mai întâi că ora sistemului este corectă înainte de oprire și
       apoi utilizați sntp, sau date -Ins și un ceas de precizie, imediat după pornire.

   LOCAL vs UTC
       Ținerea ceasului hardware într-o scară de timp locală determină rezultate incoerente în ceea ce privește
       ora de vară:

       •   Dacă Linux rulează în timpul schimbării orei de vară, ora scrisă în ceasul hardware va fi ajustată în
           funcție de această schimbare.

       •   Dacă Linux NU rulează în timpul schimbării orei de vară, ora citită de la ceasul hardware NU va fi
           ajustată pentru această schimbare.

       Ceasul hardware de pe un sistem compatibil cu ISA păstrează doar data și ora, nu are noțiunea de fus orar
       și nici de ora de vară. Prin urmare, atunci când hwclock este informat că se află în ora locală, acesta
       presupune că se află în ora locală „corectă” și nu face nicio ajustare a orei citite de la el.

       Linux gestionează schimbările de oră de vară în mod transparent numai atunci când ceasul hardware este
       menținut în scara de timp UTC. Acest lucru este facilitat pentru administratorii de sistem, deoarece
       hwclock utilizează ora locală pentru ieșire și ca argument pentru opțiunea --date.

       Sistemele POSIX, precum Linux, sunt proiectate pentru ca ceasul de sistem să funcționeze pe scara de timp
       UTC. Scopul ceasului hardware este de a inițializa ceasul de sistem, astfel încât este logic să fie
       păstrat și în UTC.

       Cu toate acestea, Linux încearcă să se adapteze la faptul că ceasul hardware se află în scara de timp
       locală. Acest lucru este valabil în primul rând pentru pornirea duală cu versiunile mai vechi ale MS
       Windows. Începând cu Windows 7, cheia de registru RealTimeIsUniversal ar trebui să funcționeze corect,
       astfel încât ceasul hardware să poată fi păstrat în UTC.

   POSIX vs „CORECT”
       O discuție despre configurarea datei și a orei ar fi incompletă dacă nu ar fi abordată și problema
       fuselor orare; acest aspect este în mare parte bine acoperit de tzset(3). Un domeniu care pare să nu aibă
       documentație este directorul „corect” al bazei de date a fusurilor orare, numit uneori „tz” sau
       „zoneinfo”.

       Există două baze de date separate în sistemul zoneinfo, posix și „right” (corect). „Right” (numită acum
       „zoneinfo-leaps”) include secundele bisecte, iar posix nu. Pentru a utiliza baza de date „right”, ceasul
       de sistem trebuie să fie setat la (UTC + secundele bisecte), ceea ce este echivalent cu (TAI - 10). Acest
       lucru permite calcularea numărului exact de secunde dintre două date care traversează o epocă de secunde
       bisecte. Ceasul sistemului este apoi convertit la ora civilă corectă, inclusiv UTC, prin utilizarea
       fișierelor de fus orar „right/corecte” care scad secundele bisecte. Notă: această configurație este
       considerată experimentală și se știe că are probleme.

       Pentru a configura un sistem pentru a utiliza o anumită bază de date, toate fișierele aflate în
       directorul acesteia trebuie copiate în rădăcina fișierului /usr/share/zoneinfo. Fișierele nu se
       utilizează niciodată direct din subdirectoarele posix sau „right”, de exemplu, TZ='right/Europe/Dublin'.
       Acest obicei devenise atât de frecvent încât proiectul „zoneinfo” din amonte a restructurat arborele de
       fișiere al sistemului prin mutarea subdirectoarelor posix și „right” din directorul zoneinfo în
       directoare fraterne:

       /usr/share/zoneinfo, /usr/share/zoneinfo-posix, /usr/share/zoneinfo-leaps

       Din nefericire, unele distribuții Linux au revenit la vechea structură arborescentă în pachetele lor.
       Astfel, problema administratorilor de sistem care ajung în subdirectorul „right/corect” persistă. Acest
       lucru face ca fusul orar al sistemului să fie configurat pentru a include secundele bisecte, în timp ce
       baza de date zoneinfo este încă configurată pentru a le exclude. Apoi, atunci când o aplicație, cum ar fi
       un ceas mondial, are nevoie de fișierul cu fusul orar South_Pole; sau un MTA de poștă electronică, sau
       hwclock are nevoie de fișierul cu fusul orar UTC; acestea îl preiau de la rădăcina /usr/share/zoneinfo ,
       deoarece așa trebuie să facă. Aceste fișiere exclud secundele bisecte, dar ceasul de sistem le include
       acum, ceea ce provoacă o conversie incorectă a timpului.

       Încercarea de a amesteca și de a potrivi fișiere din aceste baze de date separate nu va funcționa,
       deoarece fiecare dintre ele necesită ca ceasul de sistem să utilizeze o scară de timp diferită. Baza de
       date zoneinfo trebuie configurată pentru a utiliza fie posix, fie „right”, așa cum este descris mai sus,
       sau prin atribuirea unei rute la baza de date în variabila de mediu TZDIR.

STARE DE IEȘIRE

       Una dintre următoarele valori de ieșire va fi returnată:

       EXIT_SUCCESS („0” în sistemele POSIX)
           Executarea cu succes a programului.

       EXIT_FAILURE („1” în sistemele POSIX)
           Operația a eșuat sau sintaxa comenzii nu a fost validă.

MEDIU

       TZ
           Dacă această variabilă este definită, valoarea ei are prioritate față de fusul orar configurat de
           sistem.

       TZDIR
           Dacă această variabilă este definită, valoarea ei are prioritate față de ruta la directorul bazei de
           date a fusului orar configurat de sistem.

FIȘIERE

       /etc/adjtime
           Fișierul de configurare și de stare pentru hwclock. A se vedea, de asemenea, adjtime_config(5).

       /etc/localtime
           Fișierul cu fusul orar al sistemului.

       /usr/share/zoneinfo/
           Directorul bazei de date cu fusul orar al sistemului.

       Fișierele de dispozitiv hwclock pot încerca să acceseze ceasul hardware: Dev/rtc0_ Dev/rtc0 /dev/rtc
       /dev/misc/rtc /dev/efirtc /dev/misc/efirtc

CONSULTAȚI ȘI

       date(1), adjtime_config(5), adjtimex(8), gettimeofday(2), settimeofday(2), crontab(1p), tzset(3)

AUTORI

       Scris de Bryan Henderson <bryanh@giraffe-data.com>, septembrie 1996, pe baza lucrărilor efectuate pe
       programul clock(8) de Charles Hedrick, Rob Hooft și Harald Koenig. Consultați codul sursă pentru un
       istoric complet și o listă de credite (mulțumiri adresate diferiților contribuitori).

RAPORTAREA ERORILOR

       Pentru rapoarte de eroare, folosiți sistemul de urmărire al erorilor
       <https://github.com/util-linux/util-linux/issues>.

DISPONIBILITATE

       Comanda hwclock face parte din pachetul util-linux care poate fi descărcat de la Linux Kernel Archive
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.41                                    2025-07-02                                         HWCLOCK(8)