HWCLOCK(8)

НАЗИВ
hwclock - помагало временских сатова

УВОД

hwclock [функција] [опција...]

ОПИС

hwclock је административни алат за временске сатове. Може да: прикаже време хардверског сата; да подеси хардверски сат на наведено време; да подеси хардверски сат из системског сата; да подеси системски сат из хардверског сата; да компензује одступање хардверског сата; да исправи временску скалу системског сата; да подеси временску зону кернела, НТП временску скалу и епоху (само Алфа); и да предвиди будуће вредности хардверског сата на основу његове стопе одступања.

Од и2.26 важне измене су учињене у функцији --hctosys и опцији --directisa, а додата је и нова опција --update-drift. Видите њихове одговарајуће описе испод.

ФУНКЦИЈЕ

Следеће функције се узајамно искључују, само једна може бити дата у исто време. Ако није дата ниједна, основна је --show.

-a, --adjust
    Додај или одузима време од хардверског сата да би узео у обзир систематско одступање од последњег пута када је сат био постављен или подешен. Погледајте расправу испод, под Функција подешавања.

--getepoch; --setepoch
    Ове функције су само за Алфа машине, и доступне су само кроз RTC управљачки програм Линукс кернела.

    Користе се за читање и постављање вредности епохе хардверског сата кернела. Епоха је број година у АД-у на које се односи нулта вредност године у хардверском сату. На пример, ако БИОС рачунара постави бројач година у хардверском сату да садржи број пуних година од 1952. године, вредност епохе хардверског сата кернела мора бити 1952.

    Функција --setepoch захтева коришћење опције --epoch за навођење године. На пример:

    hwclock --setepoch --epoch=1952

    RTC управљачки програм покушава да погоди тачну вредност епохе, за њено постављање не мора бити захтевана.

    Ова вредност епохе се користи кад год hwclock чита или поставља хардверски сат на алфа машинама. За ISA машине кернел користи сталну епоху хардверског сата 1900.

--param-get=параметар; --param-set=параметар=вредност
    Чита и поставља RTC параметар. Ово је корисно, на пример, за довлачење RTC функције или постављање режима пребацивања резерве RTC-а.

    параметар је или бројевна вредност RTC параметра (видите include/uapi/linux/rtc.h Кернела) или алијас. Видите --help за списак исправних алијаса . параметар и вредност, ако им испред стоји 0x, се тумаче као хексадецималне, у супротном као децималне вредности.

--predict
    Предвиђа шта ће хардверски сат читати у будућности на основу времена датог опцијом --date и информације у /etc/adjtime. Ово је корисно, на пример, да се узме у обзир одступање приликом постављања буђења хардверског сата (ака аларма). Видите rtcwake(8).

    Не користи ову функцију ако је хардверски сат измењен било чим другим осим наредбом hwclock тренутног оперативног система, као што је „режим 11 минута“ или са двојног подизања другог оперативног система.

-r, --show; --get
    Чита хардверски сат и исписује његово време на стандардни излаз у ISO 8601 формату. Приказано време је увек у локалном времену, чак и ако држите ваш хардверски сат у КУВ-у. Видите опцију --localtime.

    Приказување времена хардверског сата је основно када није наведена ниједна функција.

    Функција --get такође примењује поправку одступања на очитано време, на основу информација у /etc/adjtime. Немојте користити ову функцију ако се хардверски сат мења било чиме осим наредбом hwclock тренутног оперативног система, као што је „11-минутни режим“ или са подизање другог двојног ОС-а.

-s, --hctosys
    Поставља системски сат са хардверског сата. Време очитано са хардверског сата се компензује да би се урачунао систематско одступање пре него што се користи за постављање системског сата. Погледајте расправу испод, под Функција подешавања.

    Системски сат се мора држати у КУВ временској скали да би програми датума и времена исправно радили у спрези са временском зоном подешеном за систем. Ако се хардверски сат држи у локалном времену, тада се време очитано из њега мора померити на КУВ временску скалу пре него што се користи за постављање системског сата. Функција --hctosys то ради на основу информација у датотеци /etc/adjtime или аргумената линије наредби --localtime и --utc. Напомена: не врши се дотеривањеп летњег рачунања времена. Погледајте расправу испод, под LOCAL нспр UTC.

    Кернел такође задржава вредност временске зоне, функција --hctosys је поставља на временску зону подешену за систем. Системску временску зону подешава променљива окружења TZ или датотека /etc/localtime, како би их tzset(3) протумачио. Застарело поље tz_dsttime вредности временске зоне кернела је постављено на нулу. (За детаље о томе шта је ово поље некада значило, погледајте settimeofday(2).)

    Када се користи у скрипти за покретање, чинећи функцију --hctosys првим позиварем settimeofday-а(2) од подизања система, поставиће NTP временску скалу „11-минутног режима“ преко променљиве кернела трајни_сат_је_локални. Ако се подешавање временске скале хардверског сата промени тада је потребно поновно подизање система да би се обавестио кернел. Погледајте дискусију испод, под Аутоматска синхронизација хардверског сата од стране кернела.

    Ово је добра функција за коришћење у једној од системских покретачких скрипти пре него ли се системи датотека прикаче за читање/писање.

    Ова функција никада не би требало да се користи на систему који ради. Прескакање системског времена ће узроковати проблеме, као што су оштећене временске ознаке система датотека. Такође, ако је нешто променило хардверски сат, као што је NTP „11-минутни режим“, тада ће --hctosys погрешно поставити време укључивањем компензације одступања.

    Компензација одступања се може спречити постављањем чиниоца одступања у /etc/adjtime на нулу. Ова поставка ће бити трајна све док се опција --update-drift не користи са --systohc приликом гашења (или било где другде). Други начин да се ово спречи је коришћење опције --noadjfile приликом позивања функције --hctosys. Трећи метод је брисање датотеке /etc/adjtime. Hwclock ће тада по основи да користи КУВ временску скалу за хардверски сат. Ако хардверски сат откуцава локално време, мораће да буде дефинисан у датотеци. Ово се може урадити позивањем hwclock --localtime --adjust; када датотека није присутна, ова naredba заправо неће подесити сат, али ће направити датотеку са подешеним локалним временом и фактором помака нула.

    Услов под којим може бити пожељна забрана поправке одступања hwclock-а је приликом двојног подизања више оперативних система. Ако док је овај примерак Линукса заустављен, други ОС промени вредност хардверског сата, онда када се овај примерак поново покрене, примењена поправка одступања биће нетачна.

    Да би поправка одступања hwclock-а радила исправно императив је да ништа не измени хардверски сат док његов примерак Линукса није у раду.

--set
    Поставља хардверски сат на време дато опцијом --date, и освежава временске ознаке у /etc/adjtime. Са опцијом --update-drift такође (поново)рачунара чинилац одступања. Испробава га без опције ако --set не успе. Видите --update-drift испод.

--systz
    Ово је алтернатива функцији --hctosys која не чита хардверски сат нити поставља системски сат; сходно томе не постоји никаква поправка одступања. Предвиђено је да се користи у скрипти покретања на системима са кернелом изнад издања 2.6 где знате да је системски сат постављен из хардверског сата од стране кернела током подизања система.

    Ради следеће ствари које су описане изнад у функцији --hctosys:

        • Поправља временску лествицу системског сата на КУВ ако је потребно. Само уместо испуњавања овога постављањем системског сата, hwclock једноставно обавештава кернел а он рукује изменом.

        • Поставља NTP „11 минутни режим“ времеенску лествицу кернела.

        • Поставља временску зону кернела.

Прве две су доступне само на први позив settimeofday-а(2) након подизања система. Након тога ова опција има смисла само када се користи у скрипти покретања. Ако је подешавање временске скале хардверског сата измењено тада ће поновно подизање система бити захтевано за обавештавање кернела.

-w, --systohc
    Поставља хардверски сат из системског сата, и освежава временске ознаке у /etc/adjtime. Са опцијом --update-drift такође (поново)рачунара чинилац одступања. Испробава га без опције ако --systohc не успе. Видите --update-drift испод.

--vl-read, --vl-clear
    Неки RTC уређаји су у могућности да прате напон резервне батерије а то омогућава кориснику да сазна да батерија треба да се замени . Функција --vl-read налази податак о ниском напону и дешифрује резултат у облик који се може прочитати. Функција --vl-clear поништава податак о ниском напону, који је потребан неким RTC уређајима након замене батерије.

    Видите include/uapi/linux/rtc.h кернела о томе који делови информација могу бити резултат. Знајте да немају сви RTC уређаји ову могућност праћења, нити сви управљачки програми неопходно подржавају читање информација.

-h, --help
    Приказује текст помоћи и излази.

-V, --version
    Исписује издање и излази.

ОПЦИЈЕ

--adjfile=назив-датотеке
    Преписује основну путању датотеке /etc/adjtime.

--date=датум_ниска
    Ова опција се мора користити са функцијама --set или --predict, у супротном се занемарује.

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

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

    Аргумент мора бити у локалном времену, чак и ако држите ваш хардверски сат у КУВ-у. Видите опцију --localtime. Међутим, аргумент не треба да обухвата никакве информације временске зоне. Такође не треба да буде релативно време као „+5 минута“, јер тачност hwclock-а зависи од узајамне везе између вредности аргумента и када је притиснут тастер уноса. Разломачке секунде се тихо одбацују. Ова опција је способна да разуме многе формате времена и датума, али претходни параметри треба да се осматрају.

--delay=секунде
    Ова опција се може користити за преписивање унутрашње коришћен застој приликом постављања времена сата. Основно је 0.5 (500ms) за „rtc_cmos“, за друге RTC врсте застој је 0. Ако није могуће одредити RTC врсту (из „sysfs“-а) подразумева се такође на 0.5 да би био повратно сагласан.

    Основност 500ms је заснована на опште коришћеном MC146818A-сагласном (x86) хардверском сату. Овај хардверски сат може само да се постави на било које целобројно време плус једна половина секунде. Целобројно време је потребно јер не постоји сучеље за постављање или добављање разломачке секунде. Додатни застој од пола секунде постоји јер хардверски сат освежава на следећу секунду тачно 500 ms након постављања новог времена. Нажалост, ово понашање је хардверски зависно и у истим случајевима други застој је потребан.

-D, --debug
    Користи --verbose. Опција --debug је застарела и може добити другу сврху или уклоњена у будућем издању.

--directisa
    Ова опција је значајна за ISA сагласне рачунаре у x86 и x86_64 фамилији. За друге рачунаре, нема дејства. Ова опција говори hwclock-у да користи изричите У/И инструкције за приступ хардверском сату. Без ове опције, hwclock ће користити датотеку „rtc“ уређаја, за коју подразумева да је управљана управљачким програмом Линукс RTC уређаја. Од и2.26 више неће самостално користити директиву када „rtc“ управљачки програм није доступан; ово доводи до небезбедног услова који ће допустити да два процеса приступе хардверском сату у исто време. Непосредан приступ хардверу из корисничког простора треба да се користи само за тестирање, решавање проблема, и као последњи ресурс када све друге методе не успеју. Видите опцију --rtc.

--epoch=година
    Ова опција се захтева када се користи функција --setepoch. Најмања вредност године је 1900. Највећа је зависна од система (ULONG_MAX - 1).

-f, --rtc=назив-датотеке
    Преписује основни назив датотеке „rtc“ уређаја hwclock-а. У супротном користиће први пронађени овим редом: /dev/rtc0, /dev/rtc, /dev/misc/rtc. За IA-64: /dev/efirtc /dev/misc/efirtc

-l, --localtime; -u, --utc
    Показује на коју времеску лествицу је постављен хардверски сат.

    Хардверски сат се може подесити да користи или КУВ или локалну временску скалу, али ништа у самом сату не говори која се алтернатива користи. Опције --localtime или --utc дају ове информације наредби hwclock. Ако наведете погрешну (или не наведете ништа и узме погрешну основност), и постављање и читање хардверског сата биће нетачно.

    Ако не наведете ни --utc нити --localtime тада ће се користити последња дата са функцијом постављања (--set, --systohc, или --adjust), као што је забележена у /etc/adjtime. Ако „adjtime“ датотека не постоји, основно је КУВ.

    Напомена: промене времена уштеде дневног светла могу бити недоследне када се хардверски сат држи на локалном времену. Видите расправу испод, под ЛОЛАЛНО наспрам КУВ.

--noadjfile
    Искључује објекте које доставља /etc/adjtime. hwclock неће читати нити писати у ту датотеку са овом опцијом. Или --utc или --localtime мора бити наведена када се користи ова опција.

--test
    Заправо не мења ништа на систему, тако је, Сатови или /etc/adjtime (--verbose је изричито са овом опцијом).

--update-drift
    Освежава чинилац одступања хардверског сата у /etc/adjtime. Може се користити само са --set или --systohc.

    Потребно је најмање четири сата између подешавања. Ово је потребно да би се избегли неисправни прорачуни. Што је период дужи, то ће резултујући чинилац одступања бити тачнији.

    Ова опција је додата у v2.26, јер је типична за системе за позивање hwclock --systohc при гашењу; са старим понашањем ово би самостално (поново)израчунало чинилац одступања који доводи до неколико проблема:

        • Приликом коришћења NTP-а са „11 минутним режимом“ кернела чинилац одступања би био смањен скоро на нулу.

        • Ово не би дозволило употребу „хладне“ поправке одступања. Са већином подешавања која користе „хладно“ одступање даће повољне резултате. Хладно, значи када је рачунар угашен што може имати значајан утицај на чинилац одступања.

        • (Поновно)израчунавање чиниоца одступања при сваком гашењу даје субоптималне резултате. На пример, ако краткотајни услови доводе до тога да рачунар буде ненормално врућ, прорачун чиниоца одступања би био ван опсега.

        • Значајно повећана времена гашења система (као из и2.31 када се не користи --update-drift „RTC“ се не чита).

Како hwclock израчунава чинилац одступања је добра почетна тачка, али за оптималне резултате ће вероватно морати да се прилагоди директним уређивањем датотеке /etc/adjtime. За већину подешавања када се направи оптимални чинилац одступања рачунара, не треба га мењати. Стога је старо понашање за самостално (поновно)израчунавање одступања промењено и сада захтева коришћење ове опције. Погледајте дискусију испод, под Функција подешавања.

Ова опција захтева читање хардверског сата пре постављања. Ако се не може прочитати, ова опција ће довести до неуспеха функција поставке. Ово се може десити, на пример, ако је хардверски сат поремећен услед нестанка напајања. У том случају, сат се прво мора подесити без ове опције. Упркос томе што не ради, резултујући чинилац поправке одступања би ионако био неисправан.

-v, --verbose
    Приказује више појединости о томе шта hwclock ради унутра.

БЕЛЕШКЕ

  Сатови на Линуск Систему

Постоје две врсте временско-датумских сатова:

Хардверски сат: Овај сат је независан хардверски уређај, са сопственим напајањем (батерија, кондензатор, итд.), који ради када је рачунар угашен или чак и искључен са напајања.

На ISA сагласном систему, овај сат је наведен као део ISA стандарда. Контролни програм може да чита или да постави овај сат само на целу секунду, али може такође да открије ивице 1 секунде откуцаја сата, тако да сат заправо има практично неограничену тачност.

Овај сат се обично зове хардверски сат, сат реалног времена, RTC, BIOS сат и CMOS сат. Хардверски сат, у свом облику великим словима, је састављен за коришћење hwclock-ом. Линукс кернел се такође односи према њему као према трајном сату.

Неки не-ISA системи имају неколико временских сатова са само једним који има сопствено напајање. Врло ниског напајања спољни чип I2C или SPI сата се може користити са батеријом резерве као хардверски сат за покретање функционалнијег уграђеног реално временског сата који се користи са већину других сврха.

Системски сат: Овај сат је део Линукс кернела и управљан је прекидом тајмера. (На ISA рачунару, прекид тајмера је део ISA стандарда.) Има значења само када Линукс ради на рачунару. Системско време је број секунди од 00:00:00 1. јануара 1970. КУВ-а (или још сажетије, број секунди од 1969. КУВ). Системско време ипак није цео број. Има практично бесконачну тачност.

Системско време је време које је битно. Основна сврха хардверског сата је да задржи време када Линукс не ради тако да се системски сат може покренути са њега приликом подизања система. Знајте да је у ДОС-у, за који је ISA осмишљен, хардверски сат је једини сат реалног времена.

Важно је да системско време нема никаквих прекида као што би се десило када бисте користили програм date(1) да га поставите док систем ради. Међутим, са хардверским сатом можете да радите шта год желите док систем ради, а следећи пут када се Линукс покрене, то ће учинити са подешеним временом из хардверског сата. Напомена: тренутно ово није могуће на већини система јер се hwclock --systohc позива при гашењу.

Временску зону Линукс кернела поставља hwclock. Али немојте бити заведени – скоро никога није брига у којој временској зони кернел мисли да се налази. Уместо тога, програми којима је стало до временске зоне (можда зато што желе да вам прикажу локално време) скоро увек користе традиционалнији метод одређивања временске зоне: Они користе променљиву окружења ВЗ или датотеку /etc/localtime, као што је објашњено на страници упутства за tzset(3). Међутим, неки програми и рубни делови Линукс кернела, као што су системи датотека, користе вредност временске зоне кернела. Пример је „vfat“ систем датотека. Ако је вредност временске зоне кернела погрешна, „vfat“ систем датотека ће известити и поставити погрешне временске ознаке за датотеке. Други пример је NTP „11-минутни режим“ кернела. Ако су вредност временске зоне кернела и/или променљива трајни_сат_је_локални погрешна, тада ће хардверски сат бити погрешно подешен „режимом 11 минута“. Погледајте дискусију испод, под Аутоматско усклађивање хардверског сата од стране кернела.

hwclock поставља временску зону кернела на вредност нс коју указује TZ или /etc/localtime са функцијама --hctosys или --systz.

Вредност временске зоне кернела се заправо састоји од два дела: 1) од поља „tz_minuteswest“ које показује колико минута локално време (није прилагођено за DST) заостаје за КУВ-ом, и 2) од поља „tz_dsttime“ које указује на врсту договора о летњем рачунању времена (DST) која је тренутно на снази на локалитету. Ово друго поље се не користи под Линуксом и увек је нула. Видите такође * settimeofday*(2).

  Начини приступа хардверског сата

hwclock користи много различитих начина за добијање и постављање вредности хардверског сата. Најнормалнији начин је да се изврши У/И у специјалну датотеку „rtc“ уређаја, за коју се претпоставља да њом управља управљачки програм „rtc“ уређаја. Такође, Линукс системи који користе „rtc“ радни оквир са „udev“-ом, могу да подрже више хардверских сатова. Ово може довести до потребе да се заобиђе основни „rtc“ уређај навођењем једног опцијом --rtc.

Међутим, овај начин није увек доступан јер старији системи немају „rtc“ управљачки програм. На тим системима, начин приступа хардверском сату зависи од хардвера система.

На ISA сагласном систему, hwclock може директно да приступи регистрима „CMOS меморије“ који чине сат, чинећи У/И прикључницима 0x70 и 0x71. То ради са правим У/И инструкцијама и стога то може учинити ако ради са ефективним корисничким ИД-ом администратора. Ова метода се може користити навођењем опције --directisa.

Ово је заиста лош начин приступања сату, из свих разлога што програми корисничког простора уопштено не би требало да раде директан У/И и онемогућавају прекиде. hwclock га обезбеђује за тестирање, решавање проблема и зато што је то можда једина доступна метода на ISA системима који немају радан управљачки програм „rtc“ уређаја.

  Функција подешавања

Хардверски сат обично није баш тачан. Међутим, већи део његове нетачности је потпуно предвидив – добија или губи исту количину времена сваког дана. Ово се зове системско одступање. Функција --adjust hwclock вам омогућава да примените поправку системског одступања на хардверски сат.

То ради овако: hwclock чува датотеку, /etc/adjtime, која чува неке историјске информације. Та датотека се зове „adjtime“.

Претпоставимо да почнете без датотеке „adjtime“. Издајете наредбу hwclock --set да бисте поставили хардверски сат на право тренутно време. hwclock прави датотеку „adjtime“ и бележи у њој тренутно време као последњи пут када је сат калибрисан. Пет дана касније, сат је добио 10 секунде, тако да издајете наредбу hwclock --set --update-drift да бисте га вратили за 10 секунде. hwclock ажурира датотеку „adjtime“ да прикаже тренутно време као последњи пут када је сат калибрисан и бележи 2 секунде дневно као системску стопу одступања. Прође 24 сата, а затим издате наредбу hwclock --adjust. hwclock консултује датотеку „adjtime“ и види да сат добија 2 секунде дневно када се остави сам и да је остављен на миру тачно један дан. Дакле, одузима 2 секунде од хардверског сата. Затим бележи тренутно време као последњи пут када је сат постављен. Пролазе још 24 сата и издајете још једном hwclock --adjust. hwclock ради исту ствар: одузима 2 секунде и ажурира датотеку „adjtime“ тренутним временом као последњи пут када је сат постављен.

Када користите опцију --update-drift са --set или --systohc, стопа системског одступања се (поново)израчунава поређењем са потпуно исправљеним одступањем тренутног времена хардверског сата са новим постављеним временом, из тога изводи 24-часовну стопу одступања на основу последње калибрисане временске ознаке из датотеке „adjtime“. Овај освежени чинилац одступања се затим чува у /etc/adjtime.

Мала количина грешке се увлачи када је хардверски сат постављен, тако да се --adjust уздржава од било каквог подешавања које је краће од 1 секунде. Касније, када поново затражите подешавање, акумулирано одступање ће бити више од 1 секунде а --adjust ће извршити подешавање укључујући било који делимични износ.

hwclock --hctosys такође користи податке „adjtime“ датотеке да би компензовао вредност прочитану са хардверског сата пре него што га употреби за постављање системског сата. Не дели ограничење од 1 секунде опције --adjust и одмах ће исправити вредности одступања испод секунде. Не мења време хардверског сата нити „adjtime“ датотеку. Ово може елиминисати потребу за коришћењем опције --adjust, осим ако нешто друго на систему не захтева компензацију хардверског сата.

  „Adjtime“ датотека

Како је именована само за историјску сврху контролисања подешавања, заправо садржи друге информације које користи hwclock од једног позивања до другог.

Формат „adjtime“ датотеке је, у АСКРИ-ју:

1° ред: Три броја, одвојена празнинама: 1) стопа системског одступања у секундама по дану, децимални покретни зарез; 2) резултирајући број секунди од 1969. КУВ најскоријег подешавања или калибрације, децимални цео број; 3) нула (за садејственост са clock(8)) као децимални покретни зарез.

2° ред: Један број: резултирајући број секунди од 1969. КУВ најскоријег калибрисања. Нула ако још није било калибрације или је познато да је било која претходна калибрација спорна (на пример, зато што је утврђено да нађени хардверски сат од те калибрације не садржи исправно време). Ово је децимални цео број.

3° ред: „КУВ“ или „ЛОКАЛНО“. Говори да ли је хардверски сат постављен на Координисано Универзално Време или на ликално време. Увек можете преписати ову вредност опцијама hwclock-а на линији наредби.

Можете користити „adjtime“ датотеку која је претходно била коришћена програмом clock(8) са hwclock.

  Самостално усклађивање хардверског сата кернелом

Требало би да припазите на још један начин на који се хардверски сат одржава усклађен у неким системима. Линукс кернел има режим у коме умножава системско време у хардверски сат сваких 11 минута. Овај режим је опција времена превођења, тако да сви кернели неће имати ову могућност. Ово је добар режим за коришћење када користите нешто софистицирано као што је NTP да бисте одржали ваш системски сат усклађеним. (NTP је начин одржавања вашег системског времена усклађеним или са сервером времена негде на мрежи или са радио сатом који је прикључен на ваш систем. Погледајте RFC 1305.)

Ако је кернел преведен опцијом „режим 11 минута“, биће активан када је дисциплина сата кернела у усклађеном стању. Када је у овом стању, бит 6 (бит који је постављен у маски 0x0040) променљиве језгра стање_времена је поништен. Ова вредност се исписује као ред „status“ у наредбама adjtimex --print или ntptime.

Потребан је спољни утицај, као што је NTP позадинац да би дисциплину сата кернела ставио у усклађено стање и стога укључио „11-минутни режим“. Може се искључити покретањем било чега што подешава системски сат на стари начин, укључујући hwclock --hctosys. Међутим, ако NTP позадинац и даље ради, поново ће укључити „11-минутни режим“ следећи пут када буде усклађивао системски сат.

Ако ваш систем ради са укљученим „11-минутним режимом“, можда ће морати да користи или --hctosys или --systz у скрипти за покретање, нарочито ако је хардверски сат подешен да користи локалну временску скалу. Осим ако је кернел обавештен о томе коју временску скалу хардверски сат користи, може да га поквари неком погрешном. Кернел по основи користи КУВ.

Прва наредба корисничког простора за постављање системског сата обавештава кернел о томе коју временску скалу користи хардверски сат. Ово се дешава преко променљиве кернела трајни_сат_је_локални. Ако је --hctosys или --systz прва, поставиће ову променљиву према датотеци „adjtime“ или према одговарајућем аргументу линије наредби. Знајте да када користите ову могућност а подешавање временске скале хардверског сата је измењено, онда је потребно поновно покретање да бисте обавестили кернел.

hwclock --adjust не треба да се користи са NTP „11 минутним режимом“.

  ISA вредност столећа хардверског сата

Постоји нека врста стандарда који дефинише бајт 50 CMOS меморије на ISA рачунару као показивач века. hwclock не користи нити поставља тај бајт јер постоје неки рачунари који не дефинишу бајт на тај начин, а то ионако заиста није потребно, пошто година века ради добар посао указујући на то који је век.

Ако добро користите CMOS бајт века, обратите се одржаваоцу hwclock-а; опција може бити одговарајућа.

Знајте да је овај одељак релевантан само када користите методу „direct ISA“ приступања хардверском сату. „ACPI“ доставља уобичајени начин приступа вредностима столећа, када су подржане хардвером.

ПОДЕШАВАЊЕ ДАТУМА-ВРЕМЕНА

  Одржава време без спољног усклађивања

Ова расправа је је заснована на следећим условима:

    • Ништа није покренуто што мења сатове датума-времена, као што је NTP позадинац или посао хронологије.

    • Временска зона система је подешена за одговарајуће месно време. Видите испод, под POSIX vs 'RIGHT'.

    • Одмах за време покретања следеће се позива, овим редом: adjtimex --tick вредност --frequency вредност hwclock --hctosys

    • За време гашења позива се следеће: hwclock --systohc

        • Системи без adjtimex могу да користе ntptime.

Било да се одржава тачност времена са NTP позадинцем или не, има смисла подесити систем да одржава разумно добар датум и време по своме.

Први корак да би се то догодило је јасно разумевање велике слике. Постоје два потпуно одвојена хардверска уређаја који раде сопственом брзином и одступају од „тачног“ времена својом брзином. Методе и софтвер за поправку одступања се разликују за сваки од њих. Међутим, већина система је подешена да размењује вредности између ова два сата при покретању и гашењу. Сада се грешке мерења времена појединачног уређаја преносе са једног на други. Покушајте да подесите поправку одступања само за један од њих, а одступање другог биће њиме прекривено.

Овај проблем се може избећи приликом подешавања поправке одступања за системски сат једноставно не гасећи рачунар. Ово, плус чињеница да читава тачност hwclock-а (укључујући израчунавање чинилаца одступања) зависи од тачности стопе системског сата, значи да прво треба да се уради подешавање системског сата.

Одступање системског сата се исправља помоћу опција --tick и --frequency наредбе adjtimex(8). Ове две раде заједно: откуцај је грубо подешавање, а учесталост је фино подешавање. (За системе који немају пакет adjtimex, може се користити ntptime -f ppm.)

Неке Линукс дистрибуције покушавају да самостално израчунају одступање системског сата помоћу радње поређења adjtimex-а. Покушај поправке једног одступајућег сата коришћењем другог одступајућег сата као референце је сличан псу који покушава да ухвати свој реп. Успех се може евентуално десити, али ће му вероватно претходити велики напори и фрустрације. Ова аутоматизација може донети побољшање у односу на подешавање, али очекивање оптималних резултата би било грешка. Бољи избор за ручно подешавање би биле --log опције adjtimex-а.

Можда би било ефикасније једноставно пратити одступање системског сата помоћу sntp, или date -Ins и временског дела тачности, а затим ручно израчунати поправку.

Након постављања вредности откуцаја и учесталости, наставите да тестирате и прецизирате подешавања све док системски сат не задржи добро време. Видите adjtimex(2) за више информација и пример који показује ручна израчунавања одступања.

Након што системски сат откуцава глатко, прелази на хардверски сат.

По правилу, хладно одступање ће радити најбоље у већини случајева употребе. Ово би требало да важи чак и за рачунаре који раде 24/7 чије се нормално време застоја састоји од поновног подизања система. У том случају вредност чиниоца одступања чини малу разлику. Али у ретким приликама када је рачунар угашен на дужи период, тада би хладно одступање требало да да боље резултате.

Кораци за израчунавање хладног одступања:

1
    Осигурава да NTP позадинац неће бити покренут приликом покретања.

2
    Време системског сата мора бити тачно приликом гашења!

3
    Гаси систем.

4
    Пушта да прође одређени период а да не мења хардверски сат.

5
    Покреће систем.

6
    Одмах користи hwclock да постави тачно време, додајући --update-drift опцију.

Напомена: ако корак 6 користи --systohc, тада системски сат мора бити постављен тачно (корак 6a) одмах пре него ли то уради.

Да hwclock израчунава чиниоца одступања је добра полазна тачка, али за оптималне резултате ће вероватно морати да се дотера непосредним уређивањем датотеке /etc/adjtime. Наставите да тестирате и прецизирате чиниоца одступања док се хардверски сат не поправи исправно при покретању. Да ово проверите, прво се уверите да је системско време тачно пре гашења, а затим користите sntp или date -Ins и временски део прецизности, одмах након покретања.

  ЛОКАЛНО vs КУВ

Задржавање хардверског сата на месној временској лествици доводи до недоследних резултата времена уштеде дневног светла:

    • Ако Линукс ради за време промене времена уштеде дневног светла, време записано у хардверском сату биће подешено за измену.

    • Ако Линукс НЕ ради за време промене времена уштеде дневног светла, време прочитано са хардверског сата НЕЋЕ бити подешено за измену.

Хардверски сат на ISA сагласном систему чува само датум и време, нема идеју о временској зони нити о летњем рачунању времена. Међутим, када се hwclock-у каже да је у локалном времену, подразумева да је у „тачном“ локалном времену и не врши дотеривање на време прочитано са њега.

Линукс транспарентно управља променама летњег рачунања времена само када се хардверски сат држи у КУВ временској скали. Тако се олакшава администраторима система јер hwclock користи локално време као свој излаз и као аргумент за опцију --date.

ПОСИКС системи, као што је Линукс, осмишљени су тако да системски сат ради у КУВ временској скали. Сврха хардверског сата је да покрене системски сат, тако да и његово држање у КУВ-у има смисла.

Линукс, међутим, покушава да прилагоди хардверски сат који је у локалној временској скали. Ово је првенствено за двојно подизање система са старијим издањима МС Виндоуза. Од Виндоуза 7 надаље, кључ регистра „Стварно време је универзално“ би требало да ради исправно тако да се његов хардверски сат може држати у КУВ-у.

  POSIX vs „RIGHT“

Расправа о подешавању датума и времена била би непотпуна без адресирања временских зона, ово је углавном добро покривено tzset-ом(3). Једна област за коју се чини да нема документације је „прави“ директоријум базе података временских зона, који се понекад назива „tz“ или „zoneinfo“.

Постоје две одвојене базе података у „zoneinfo“ систему, посикс и „права“. „Права“ (сада се назива „zoneinfo-leaps“) укључује преступне секунде, а посикс не. Да бисте користили „праву“ базу података, системски сат мора бити постављен на (КУВ + преступне секунде), што је еквивалентно са (TAI - 10). Ово омогућава израчунавање тачног броја секунди између два датума који прелазе епоху преступне секунде. Системски сат се затим pretvara у тачно грађанско време, укључујући КУВ, коришћењем датотека „праве“ временске зоне које одузимају преступне секунде. Напомена: ово подешавање се сматра експерименталним и познато је да има проблема.

Да бисте подесили систем да користи одређену базу података, све датотеке које се налазе у њеном директоријуму морају бити умножене у корен /usr/share/zoneinfo. Датотеке се никада не користе директно из посикс или „правих“ поддиректоријума, нпр. TZ='right/Europe/Dublin'. Ова навика је постала толико уобичајена да је узводни „zoneinfo“ пројекат реструктурирао системско стабло датотека премештањем посикс и „правих“ поддиректоријума из директоријума „zoneinfo“ у директоријуме сродника:

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

Нажалост, неке Линукс дистрибуције га враћају на стару структуру стабла у својим пакетима. Дакле, проблем администратора система који досежу до „правог“ поддиректоријума и даље постоји. Ово доводи до тога да се системска временска зона подеси тако да укључује преступне секунде док је „zoneinfo“ база података још увек подешена да их искључи. Затим када програм као што је светски сат потражује датотеку временске зоне јужног пола; или МТА е-поште, или hwclock потражује датотеку КУВ временске зоне; довлаче је из корена /usr/share/zoneinfo, јер је то што они треба да раде. Те датотеке искључују преступне секунде, али их системски сат сада укључује, што доводи до нетачног претварања времена.

Покушај мешања и упаривања датотека из ових засебних база података неће успети, јер свака од њих захтева да системски сат користи другачију временску скалу. „zoneinfo“ база података мора бити подешена да користи или посикс или „праву“, као што је горе описано, или додељивањем путање базе података променљивој окружења TZDIR.

ИЗЛАЗНО СТАЊЕ

Једна од следећих излазних вредности биће дата:

EXIT_SUCCESS (0 на POSIX системима)
    Извршавање програма је успешно.

EXIT_FAILURE (1 на POSIX системима)
    Радња није успела или синтакса наредбе није била исправна.

ОКРУЖЕЊЕ

TZ
    Ако је ова променљива постављена њена вредност има предност у односу на системски подешену временску зону.

TZDIR
    Ако је ова променљива постављена њена вредност има предност у односу на путању директоријума базе података системски подешене временске зоне.

ДАТОТЕКЕ

/etc/adjtime
    Датотека подешавања и стања за hwclock. Видите такође adjtime_config(5).

/etc/localtime
    Датотека временске зоне система.

/usr/share/zoneinfo/
    Директоријум базе података временске зоне система.

Датотеке уређаја hwclock може испробати зарад приступа хардверског сата: /dev/rtc0 /dev/rtc /dev/misc/rtc /dev/efirtc /dev/misc/efirtc

ПОГЛЕДАЈТЕ ТАКОЂЕ

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

АУТОРИ

Написао је септембра 1996., на основу рада на програму clock(8) који су одрадили Charles Hedrick, Rob Hooft, и Harald Koenig. Видите изворни код за сав историјат и заслуге.

ПРИЈАВЉИВАЊЕ ГРЕШАКА

За пријављивање грешака, користите „https://github.com/util-linux/util-linux/issues[issue tracker]“.

ДОСТУПНОСТ

Наредба hwclock је део „util-linux“ пакета који се може преузети са