Već smo opisivali kako iskoristiti Linux za pokretanje nekih vremenski ovisnih
akcija. Često je bitno da su one precizno smještene u vremenu. Za to je naravno
potrebno sistemski sat držati maksimalno točnim. Osim toga, bilo kakve transakcije
i programi svoje zapise pišu s vremenskim oznakama pa i njima treba preciznost.
Naravno, ako po računalu organiziramo vlastito vrijeme, ne moramo spominjati
da bi nam odstupanja mogla predstavljati neugodnosti.
Kod Linuxa dobro je razlikovati pojam vremenskih zona i BIOS vremena. Windowsi
primjerice prikazuju točno ono vrijeme koje je zapisano u BIOS-u, dok Linux
smatra da je tamo zapisano UTC (univerzalno ili po Greenwichu) vrijeme na
koje dodaje lokalnu vremensku zonu (u našem slučaju +1 h). Kad imamo dual-boot
računalo očito ćemo BIOS vrijeme izjednačiti s lokalnim kako ne bi dolazilo
do nesuglasica. Srećom, ovakve se stvari uglavnom uspješno rješavaju već pri
instalaciji.
Spomenimo još kako Linux hardversko (RTC) vrijeme pročita pri pokretanju računala,
a sprema ga u BIOS pri gašenju. U međuvremenu se oslanja na vlastiti sat,
pa tako možemo izbjeći nesavršenosti hardvera. Koristimo li naš sustav dugo
vremena bez gašenja, mogle bi se pojaviti velike razlike između te dvije lokacije
zapisa vremena. Po želji možemo zapisati vrijednosti u hardver pomoću "hwclock
--adjust
".
Bez obzira na mehanizme, sat često odluta u svom smjeru te ga moramo vratiti
na pravi put. Većina grafičkih sučelja ima svoje aplikacije za podešavanje,
no mi to možemo obaviti i iz naredbenog retka. Naredba za postavljanje vremena
(i datuma) je date. Bez argumenata ispisat će nam trenutne vrijednosti koje
možemo postaviti na slijedeći način: date --set="16:30:22"
. O formatima
zapisa ne previše intuitivne naredbe date više će znati man stranica.
NTP
Velik broj računala na neki je način, povremeno ili stalno, spojeno na Internet.
Tamo se pak nalaze takozvani NTP (Network Time Protocol) serveri, za koje
se može reći da održavaju apsolutno točno vrijeme. Upravo prema njima ćemo
se i mi orijentirati i podesiti naše računalo. Program koji će nam za to trebati
zove se ntpdate, a njegovo korištenje je vrlo jednostavno. Kao argument samo
trebamo navesti adresu jednog ili više NTP servera, fizički što bliže nama
kako bi odziv bio što kraći, a time i preciznost veća. CARNet se brine o održavanju
nekoliko njih (javni Stratum 2 serveri), a nama su najbliži zg1.ntp.carnet.hr
i zg2.ntp.carnet.hr. Globalna lista nalazi se na http://ntp.isc.org/bin/view/Servers/WebHome.
Ako želimo preciznije vrijeme kroz dulje razdoblje, ntpdate možemo postaviti
u crontab kako bi se periodički izvršavala. Ako pak nemamo stalnu Internet
vezu, naredbu možemo staviti unutar Kppp programa ili u skriptu koja se pokreće
kod podizanja veze (/etc/ppp/ip-up ili slično). Serveri uvijek vraćaju
UTC, što znači da bi naša vremenska zona trebala biti dobro postavljena (datoteka
/etc/localtime, koja je zapravo simbolički link na npr. Europe/Zagreb).
Bolje rješenje od periodičkog pokretanja ntpdatea je imati stalno pokrenut
ntpd, pozadinski program koji će se sam brinuti o održavanju točnog vremena,
čim mu u konfiguraciji (/etc/ntp.conf) upišemo nekoliko NTP servera.
Točno vrijeme se računa uzimajući u obzir i mrežno kašnjenje, tako da se mogu
postići odstupanja od samo nekoliko milisekundi. No, još uvijek treba koristiti
što bliže servere, a po mogućnosti barem dva zbog toga što će se onda koristiti
njihova srednja vrijednost. Čak i ako nema mrežne povezanosti, program će
na temelju starih vrijednosti pokušati izračunati odstupanja i tako držati
sat nešto točnijim.
Ntpd će se pomicati prema točnom vremenu u nizu koraka, što je bolje rješenje
za poneke programe koji bi se inače zbunili pri naglim promjenama, pogotovo
ako su unatrag. Neće čak ni promijeniti vrijeme ako je razlika prevelika (više
od 1000 sekundi) pa tada opet moramo koristiti ntpdate ili "ntpd
-q ime_servera
". Budući da odmah ne možemo primijetiti neku ozbiljniju
promjenu, rad programa možemo nadzirati s "ntpq -p
".
Nama je zanimljiv primjerice stupac offset iz kojeg očitavamo razliku
lokalnog vremena od onog na serveru.
Ntpd čak može postati server za lokalnu mrežu, što je puno bolje rješenje
za veći broj računala.
Chrony
Zbog nezadovoljstva Ntpdom koji je optimiziran za računala stalno povezana na Internet nastao je Chrony. On se također može povezivati na Internet u potrazi za UTC vremenom, no bolji je u računanju kad se ne može osloniti na neki točan izvor. Također je sposoban računati netočnosti hardverskog sata i pomoći pri situacijama kad je računalo ugašeno dugo vremena. Znajući koliko hardverski sat kasni u jedinici vremena, pri ponovnom pokretanju računala uzima to u obzir i kompenzira na sistemskom satu. U slučaju da nemamo nikakvu vezu na Internet vrijeme možemo zadati i ručno programom chronyc. Njime također možemo dobiti ispis svih parametara našeg programa, kao i podešavati konfiguraciju.