HWCLOCK(8) | Администрација система | HWCLOCK(8) |
НАЗИВ¶
hwclock - помагало временских сатова
УВОД¶
hwclock [function] [option...]
ОПИС¶
hwclock is an administration tool for the time clocks. It can: display the Hardware Clock time; set the Hardware Clock to a specified time; set the Hardware Clock from the System Clock; set the System Clock from the Hardware Clock; compensate for Hardware Clock drift; correct the System Clock timescale; set the kernel’s timezone, NTP timescale, and epoch (Alpha only); and predict future Hardware Clock values based on its drift rate.
Од и2.26 важне измене су учињене у функцији --hctosys и опцији --directisa, а додата је и нова опција --update-drift. Видите њихове одговарајуће описе испод.
ФУНКЦИЈЕ¶
Следеће функције се узајамно искључују, само једна може бити дата у исто време. Ако није дата ниједна, основна је --show.
-a, --adjust
--getepoch; --setepoch
Користе се за читање и постављање вредности епохе хардверског сата кернела. Епоха је број година у АД-у на које се односи нулта вредност године у хардверском сату. На пример, ако БИОС рачунара постави бројач година у хардверском сату да садржи број пуних година од 1952. године, вредност епохе хардверског сата кернела мора бити 1952.
Функција --setepoch захтева коришћење опције --epoch за навођење године. На пример:
hwclock --setepoch --epoch=1952
RTC управљачки програм покушава да погоди тачну вредност епохе, за њено постављање не мора бити захтевана.
Ова вредност епохе се користи кад год hwclock чита или поставља хардверски сат на алфа машинама. За ISA машине кернел користи сталну епоху хардверског сата 1900.
--param-get=параметар; --param-set=параметар=вредност
параметар је или бројевна вредност RTC параметра (видите include/uapi/linux/rtc.h Кернела) или алијас. Видите --help за списак исправних алијаса . параметар и вредност, ако им испред стоји 0x, се тумаче као хексадецималне, у супротном као децималне вредности.
--predict
Не користи ову функцију ако је хардверски сат измењен било чим другим осим наредбом hwclock тренутног оперативног система, као што је „режим 11 минута“ или са двојног подизања другог оперативног система.
-r, --show; --get
Приказување времена хардверског сата је основно када није наведена ниједна функција.
Функција --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
--systz
Ради следеће ствари које су описане изнад у функцији --hctosys:
Прве две су доступне само на први позив settimeofday-а(2) након подизања система. Након тога ова опција има смисла само када се користи у скрипти покретања. Ако је подешавање временске скале хардверског сата измењено тада ће поновно подизање система бити захтевано за обавештавање кернела.
-w, --systohc
--vl-read, --vl-clear
See the Kernel’s include/uapi/linux/rtc.h for details on which pieces of information may be returned. Note that not all RTC devices have this monitoring capability, nor do all drivers necessarily support reading the information.
-h, --help
-V, --version
ОПЦИЈЕ¶
--adjfile=назив-датотеке
--date=датум_ниска
hwclock --set --date='16:45'
hwclock --predict --date='2525-08-14 07:11:05'
Аргумент мора бити у локалном времену, чак и ако држите ваш хардверски сат у КУВ-у. Видите опцију --localtime. Међутим, аргумент не треба да обухвата никакве информације временске зоне. Такође не треба да буде релативно време као „+5 минута“, јер тачност hwclock-а зависи од узајамне везе између вредности аргумента и када је притиснут тастер уноса. Разломачке секунде се тихо одбацују. Ова опција је способна да разуме многе формате времена и датума, али претходни параметри треба да се осматрају.
--delay=секунде
Основност 500ms је заснована на опште коришћеном MC146818A-сагласном (x86) хардверском сату. Овај хардверски сат може само да се постави на било које целобројно време плус једна половина секунде. Целобројно време је потребно јер не постоји сучеље за постављање или добављање разломачке секунде. Додатни застој од пола секунде постоји јер хардверски сат освежава на следећу секунду тачно 500 ms након постављања новог времена. Нажалост, ово понашање је хардверски зависно и у истим случајевима други застој је потребан.
-D, --debug
--directisa
--epoch=година
-f, --rtc=назив-датотеке
-l, --localtime; -u, --utc
Хардверски сат се може подесити да користи или КУВ или локалну временску скалу, али ништа у самом сату не говори која се алтернатива користи. Опције --localtime или --utc дају ове информације наредби hwclock. Ако наведете погрешну (или не наведете ништа и узме погрешну основност), и постављање и читање хардверског сата биће нетачно.
Ако не наведете ни --utc нити --localtime тада ће се користити последња дата са функцијом постављања (--set, --systohc, или --adjust), као што је забележена у /etc/adjtime. Ако „adjtime“ датотека не постоји, основно је КУВ.
Напомена: промене времена уштеде дневног светла могу бити недоследне када се хардверски сат држи на локалном времену. Видите расправу испод, под ЛОЛАЛНО наспрам КУВ.
--noadjfile
--test
--update-drift
Потребно је најмање четири сата између подешавања. Ово је потребно да би се избегли неисправни прорачуни. Што је период дужи, то ће резултујући чинилац одступања бити тачнији.
Ова опција је додата у v2.26, јер је типична за системе за позивање hwclock --systohc при гашењу; са старим понашањем ово би самостално (поново)израчунало чинилац одступања који доводи до неколико проблема:
Како hwclock израчунава чинилац одступања је добра почетна тачка, али за оптималне резултате ће вероватно морати да се прилагоди директним уређивањем датотеке /etc/adjtime. За већину подешавања када се направи оптимални чинилац одступања рачунара, не треба га мењати. Стога је старо понашање за самостално (поновно)израчунавање одступања промењено и сада захтева коришћење ове опције. Погледајте дискусију испод, под Функција подешавања.
Ова опција захтева читање хардверског сата пре постављања. Ако се не може прочитати, ова опција ће довести до неуспеха функција поставке. Ово се може десити, на пример, ако је хардверски сат поремећен услед нестанка напајања. У том случају, сат се прво мора подесити без ове опције. Упркос томе што не ради, резултујући чинилац поправке одступања би ионако био неисправан.
-v, --verbose
БЕЛЕШКЕ¶
Сатови на Линуск Систему¶
Постоје две врсте временско-датумских сатова:
The Hardware Clock: This clock is an independent hardware device, with its own power domain (battery, capacitor, etc), that operates when the machine is powered off, or even unplugged.
На ISA сагласном систему, овај сат је наведен као део ISA стандарда. Контролни програм може да чита или да постави овај сат само на целу секунду, али може такође да открије ивице 1 секунде откуцаја сата, тако да сат заправо има практично неограничену тачност.
Овај сат се обично зове хардверски сат, сат реалног времена, RTC, BIOS сат и CMOS сат. Хардверски сат, у свом облику великим словима, је састављен за коришћење hwclock-ом. Линукс кернел се такође односи према њему као према трајном сату.
Неки не-ISA системи имају неколико временских сатова са само једним који има сопствено напајање. Врло ниског напајања спољни чип I2C или SPI сата се може користити са батеријом резерве као хардверски сат за покретање функционалнијег уграђеног реално временског сата који се користи са већину других сврха.
The System Clock: This clock is part of the Linux kernel and is driven by a timer interrupt. (On an ISA machine, the timer interrupt is part of the ISA standard.) It has meaning only while Linux is running on the machine. The System Time is the number of seconds since 00:00:00 January 1, 1970 UTC (or more succinctly, the number of seconds since 1969 UTC). The System Time is not an integer, though. It has virtually infinite precision.
Системско време је време које је битно. Основна сврха хардверског сата је да задржи време када Линукс не ради тако да се системски сат може покренути са њега приликом подизања система. Знајте да је у ДОС-у, за који је ISA осмишљен, хардверски сат је једини сат реалног времена.
Важно је да системско време нема никаквих прекида као што би се десило када бисте користили програм date(1) да га поставите док систем ради. Међутим, са хардверским сатом можете да радите шта год желите док систем ради, а следећи пут када се Линукс покрене, то ће учинити са подешеним временом из хардверског сата. Напомена: тренутно ово није могуће на већини система јер се hwclock --systohc позива при гашењу.
Временску зону Линукс кернела поставља hwclock. Али немојте бити заведени – скоро никога није брига у којој временској зони кернел мисли да се налази. Уместо тога, програми којима је стало до временске зоне (можда зато што желе да вам прикажу локално време) скоро увек користе традиционалнији метод одређивања временске зоне: Они користе променљиву окружења ВЗ или датотеку /etc/localtime, као што је објашњено на страници упутства за tzset(3). Међутим, неки програми и рубни делови Линукс кернела, као што су системи датотека, користе вредност временске зоне кернела. Пример је „vfat“ систем датотека. Ако је вредност временске зоне кернела погрешна, „vfat“ систем датотека ће известити и поставити погрешне временске ознаке за датотеке. Други пример је NTP „11-минутни режим“ кернела. Ако су вредност временске зоне кернела и/или променљива трајни_сат_је_локални погрешна, тада ће хардверски сат бити погрешно подешен „режимом 11 минута“. Погледајте дискусију испод, под Аутоматско усклађивање хардверског сата од стране кернела.
hwclock sets the kernel’s timezone to the value indicated by TZ or /etc/localtime with the --hctosys or --systz functions.
Вредност временске зоне кернела се заправо састоји од два дела: 1) од поља „tz_minuteswest“ које показује колико минута локално време (није прилагођено за DST) заостаје за КУВ-ом, и 2) од поља „tz_dsttime“ које указује на врсту договора о летњем рачунању времена (DST) која је тренутно на снази на локалитету. Ово друго поље се не користи под Линуксом и увек је нула. Видите такође * settimeofday*(2).
Начини приступа хардверског сата¶
hwclock uses many different ways to get and set Hardware Clock values. The most normal way is to do I/O to the rtc device special file, which is presumed to be driven by the rtc device driver. Also, Linux systems using the rtc framework with udev, are capable of supporting multiple Hardware Clocks. This may bring about the need to override the default rtc device by specifying one with the --rtc option.
Међутим, овај начин није увек доступан јер старији системи немају „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 also uses the adjtime file data to compensate the value read from the Hardware Clock before using it to set the System Clock. It does not share the 1 second limitation of --adjust, and will correct sub-second drift values immediately. It does not change the Hardware Clock time nor the adjtime file. This may eliminate the need to use --adjust, unless something else on the system needs the Hardware Clock to be compensated.
„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 should not be used with NTP '11 minute mode'.
ISA вредност столећа хардверског сата¶
Постоји нека врста стандарда који дефинише бајт 50 CMOS меморије на ISA рачунару као показивач века. hwclock не користи нити поставља тај бајт јер постоје неки рачунари који не дефинишу бајт на тај начин, а то ионако заиста није потребно, пошто година века ради добар посао указујући на то који је век.
Ако добро користите CMOS бајт века, обратите се одржаваоцу hwclock-а; опција може бити одговарајућа.
Знајте да је овај одељак релевантан само када користите методу „direct ISA“ приступања хардверском сату. „ACPI“ доставља уобичајени начин приступа вредностима столећа, када су подржане хардвером.
ПОДЕШАВАЊЕ ДАТУМА-ВРЕМЕНА¶
Одржава време без спољног усклађивања¶
Ова расправа је је заснована на следећим условима:
Било да се одржава тачност времена са NTP позадинцем или не, има смисла подесити систем да одржава разумно добар датум и време по своме.
Први корак да би се то догодило је јасно разумевање велике слике. Постоје два потпуно одвојена хардверска уређаја који раде сопственом брзином и одступају од „тачног“ времена својом брзином. Методе и софтвер за поправку одступања се разликују за сваки од њих. Међутим, већина система је подешена да размењује вредности између ова два сата при покретању и гашењу. Сада се грешке мерења времена појединачног уређаја преносе са једног на други. Покушајте да подесите поправку одступања само за један од њих, а одступање другог биће њиме прекривено.
Овај проблем се може избећи приликом подешавања поправке одступања за системски сат једноставно не гасећи рачунар. Ово, плус чињеница да читава тачност hwclock-а (укључујући израчунавање чинилаца одступања) зависи од тачности стопе системског сата, значи да прво треба да се уради подешавање системског сата.
Одступање системског сата се исправља помоћу опција --tick и --frequency наредбе adjtimex(8). Ове две раде заједно: откуцај је грубо подешавање, а учесталост је фино подешавање. (За системе који немају пакет adjtimex, може се користити ntptime -f ppm.)
Неке Линукс дистрибуције покушавају да самостално израчунају одступање системског сата помоћу радње поређења adjtimex-а. Покушај поправке једног одступајућег сата коришћењем другог одступајућег сата као референце је сличан псу који покушава да ухвати свој реп. Успех се може евентуално десити, али ће му вероватно претходити велики напори и фрустрације. Ова аутоматизација може донети побољшање у односу на подешавање, али очекивање оптималних резултата би било грешка. Бољи избор за ручно подешавање би биле --log опције adjtimex-а.
Можда би било ефикасније једноставно пратити одступање системског сата помоћу sntp, или date -Ins и временског дела тачности, а затим ручно израчунати поправку.
Након постављања вредности откуцаја и учесталости, наставите да тестирате и прецизирате подешавања све док системски сат не задржи добро време. Видите adjtimex(2) за више информација и пример који показује ручна израчунавања одступања.
Након што системски сат откуцава глатко, прелази на хардверски сат.
По правилу, хладно одступање ће радити најбоље у већини случајева употребе. Ово би требало да важи чак и за рачунаре који раде 24/7 чије се нормално време застоја састоји од поновног подизања система. У том случају вредност чиниоца одступања чини малу разлику. Али у ретким приликама када је рачунар угашен на дужи период, тада би хладно одступање требало да да боље резултате.
Steps to calculate cold drift:
1
2
3
4
5
6
Напомена: ако корак 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
/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)
АУТОРИ¶
Написао је Bryan Henderson <bryanh@giraffe-data.com>, септембра 1996., на основу рада на програму clock(8) који су одрадили Charles Hedrick, Rob Hooft, и Harald Koenig. Видите изворни код за сав историјат и заслуге.
ПРИЈАВЉИВАЊЕ ГРЕШАКА¶
За пријављивање грешака, користите пратиоца грешака на <https://github.com/util-linux/util-linux/issues>.
ДОСТУПНОСТ¶
Наредба hwclock је део пакета „util-linux“ који се може преузети са Архиве Линукс кернела <https://www.kernel.org/pub/linux/utils/util-linux/>.
2024-08-05 | util-linux 2.40.2 |