Network Time Protocol

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.

Ivan Capan