Bashis ajatsooni, kuupäeva ja kella seadistamine
Priidu Niit A22 sügis 2012
POOLELI!
Sissejuhatus
Järgnev wiki artikkel tutvustab lähemalt kuidas Linux aega hoiab ja mida on vaja teha probleemide vältimiseks. Tavajuhtudel pole kasutajatel tarvis ajaseadeid seadistada, aga vahel võib seda siiski ette tulla. Sellisel juhul on hea teada, kuidas seda kõige mõistlikumalt teha.
Linux ja aeg
Järgnevalt käsitleme ajatsooni, riistvarakella ja Linuxi enda kella toimimist pikemalt. Nii nagu igal operatsioonisüsteemil, on ka Linuxil võimalik ära määratleda ajatsoon. Ajavööndid on vajalikud ja sellega määratakse ära see, et millises piirkonnas on teatud ajahetkel kellaaeg. Kui aga suhtleme kaugemate piirkondadega, nagu infotehnoloogias seda tihti ette tuleb, võivad tekkida probleemid. Sellisteks puhkudeks on kasutusele võetud universiaalaeg UT või UTC. Varem tuntud ka Greenwichi või GMT nime alla. Iga kohalik aeg määratakse kindlaks ajavööndiga. Kuigi geograafia lubab samaagse keskpäeva paikadel kuuluda samasse ajavööndisse, siis praktikas see nii ei ole. Osad riigid kasutavad säästvat ajaarvestuse, mis tähendab seda, et kellaaega muudetakse nii, et oleks rohkem päikesevalgust töö ajal (talveaeg ja suveaeg). Teised riigid seda aga ei kasuta. Ajavööndit on parem määrata asukoha järgi või öeldes erinevuse kohaliku ja universiaalaja vahel. Linuxil on ajavööndite koha oma pakett, mida on võimalik reeglite muutumisel värskendada. Administraatoril jääb üle vaid valida sobiv ajavööde. Ka iga tavakasutaja saab seda seadistada. See on vajalik, kuna inimesed töötavad arvutitega eri riikides üle maailma.
Iga personaalarvutil on ka riisrvarakell. See töötab tänu akule ka siis, kui arvuti on vooluvõrgust välja lülitatud. Riistvarakella saab seada BIOS- is häälestuskuval või ükskõik millises töötavas operatsioonisüsteemis.
Linuxi tuum jälgib aega riistvarakellast sõltumatult. Alglaadimisel võrdsustab Linux oma kella küll riistvarakellaga, aga pärst töötavad nad sõltumatult. Kuna riistvarakella vaatamine on keeruline ja aeglane protsess, hoiab Linux oma kella ise.
Tuuma kell ei tea ajavöönditest midagi. See näitab vaid universiaalaega, mis omakorda tõstab töökindlust. Iga protsess käsitleb ajavööndi teisendusi ise, kasutades ajavööndipaketi vahendeid.
Riistvarakell võib toimida nii universiaalaja kui ka kohaliku aja järgi. Üldjuhul on selleks siiski universiaalaeg, kuna siis pole vaja seadistada suve- või talveajale üleminekut. Küll aga näiteks MS-DOS, Windows ja OS/2 operatsioonisüsteemid eeldavad, et riitsvarakell toimib kohaliku aja järgi. Linux võib käsitleda mõlemaid. Kui riistvarakell käib kohaliku aja järgi, tuleb jälgida sesiooniaja muutumist.
Süsteemikella seaded
Käsk date väljastab kellaaja,kuupäeva ja ajatsooni. Mitte sassi ajada käsuga time. Time käib protsesside kohta, date praeguse aja kohta.
Aega saab seadistada ainult juurkasutaja. Igal kasutajal võib olla küll erinev ajavöönd, aga kell on kõigile sama.
date Sun Jul 13 21:53:41 EET DST 1997
Tulemus: Väljastatakse praegune aeg ja kuupäev. „EET DST” tähistab ajavööndit, mis on Ida-Euroopa sessiooniaeg.
Universiaalaja esitamine date –u käsuga.
date -u Sun Jul 13 18:53:42 UTC 1997
Tulemus: Väljastatakse univesiaalaeg UTC.
Süsteemikella seadistamine date käsuga.
date 07132157 Sun Jul 13 21:57:00 EET DST 1997
Tulemus: Süsteemikellaks seatakse 21.57 13.juuli.
Saab ka teisiti. Ehks siis date –s käsuga.
date -s "1 Jan 2012"
Tulemus: Seab süsteemi kuupäevaks 1. Jaanuari 2012.
date -s 15:47:51
Tulemus: Seab süsteemi kellaajaks 15:47:51
Saab ka koos:
date -s "1 Jan 2012 15:47:51"
Kellaega saab esitada ka erivevates formaatides:
- %H : tund
- %M : minut
- %S : sekund
- %D: kuupäeva formaat võrdne %m/%d/%y
- %Z: ajatsoon
- %j: mitmes päev aastas
date -u +"Time is %H:%M:%S on %D in %Z (%j day of the year)"
Tulemus: Väljastatakse kellaeg järgnevas formaadis: Time is 05:26:45 on 10/09/12 in UTC (283 day of the year)
Riistvara kella seaded
Tarkvara kell ei pruugi alati õige olla. Teda hoiab käigus taimeri perioodiline katkestus, mille genereerib arvuti riistvara. Kui töötab liiga palju protsesse, võib taimeri katkestus kaua aega võtta ja tarkvarakell võib taha jääda. Kuna riistvarakell käib ise, on see palju täpsem.
Riistvara kella on lihtne seadistada BIOS-is. See väldib probleeme, mida süsteemiaja muutmine võib tekitada. Kui BIOS-i kasutamine pole võimalik, saab uue aja seadistada hwclock käsuga. Kui mõni süsteemi osa hakkab tõrkuma, oleks mõistlik arvuti taaskäivitada.
hwclock --show Tue Oct 9 01:16:34 2012 -0.653095 seconds
Tulemus: Kuvatakse riistvara kellaaeg.
Riistvara kella ja kuupäeva on võimalik järgmiselt seadistada.
hwclock --set --date="1 Jan 2012 15:47:51"
Tulemus: Riistvara kella kellaajaks määratakse 15:47:51 ja kuupäevaks 1. Jaanuar 2012.
Kui riistvara kell ja tarkvara kell näitavad erinevat aega, on neid võimalik väga lihtsate käskude abil samastada.
hwclock –systohc
Tulemus: Riistvara kell samastatakse tarkvara kellaga.
hwclock –hctosys
Tulemus: Tarkvara kell samastatakse riistvara kellaga.
Ajatsooni seaded
Linux Debian süsteemis määrab ajavööndi link faili /etc/localtime, kus kirjeldatakse täpselt ära kohalik ajavööde. Ajavöötme andmed salvestatakse kataloogis /usr/lib/zoneinfo. Erinevusi võib esineda teistes Linuxi varjantides.
Keskonnamuutuja TZ häälestamise teel saab kasutaja ajavööndit muuta. Kui häälestus puudub, võetakse kasutusele süsteemi ajavöönd.
Date käsuga saame teada ajatsooni. Näiteks MST on Mountain Standard Time
date Fri Mar 29 21:07:39 MST 2002
Ajatsooni muutmine: Esiteks käivitada /etc/localtime
cat /etc/timezone America/New_York
Muuta faili sisu nii, et muutuks ajatsoon.
vim /etc/timezone America/Los_Angeles
Eksportida ajatsooni seaded käsurealt.
export TZ=America/Los_Angeles
Tulemus: New Yorki-i ajatsoon vahetati Los Angelese vastu.
Automaatne kella uuendamine
Kui arvuti asub võrgus, saab ta oma kella automaatselt kontrollida. Näiteks võrreldes seda mõne teise arvuti või serveri kellaga. Üldjuhul on selleks server. Kui teine arvuti on täpse kellaajaga, hoiavad mõlemad arvutid õiget aega. Eelnimetatud ajakontrolli saab organiseerida rdate ja netdate käskude abil. Mõlemad kontrollivad teise arvuti aega. Netdate abil saab hallata mitut arvutit. Kui käivitada käsk deemoni cron abil, hoiab teie arvuti samasugust aega nagu teine arvuti.
Kellaja ühekordne seadmine toimub näiteks järgmiselt, eeldusel, et on paigaldatud pakett rdate
apt-get install rdate
ning öeldes
rdate ajaserver.loomaaed.tartu.ee
Kellaaja sünkronisseerimiseks sobib kasutada paketti ntp
apt-get install ntp
ning seadistusfailis /etc/ntpd.conf leida üles read
server 0.debian.pool.ntp.org server 1.debian.pool.ntp.org server 2.debian.pool.ntp.org server 3.debian.pool.ntp.org
ning soovi korral asendada need oma teenese pakkuja nime kasutava ühe reaga, näiteks
server ajaserver.loomaaed.tartu.ee
Kulub mõni aega, umbes 10 minutit kuni ntp töötamine stabiliseerub, sellest annab tunnistust, et ntptrace vastab kus arvuti asub ntp hierarhias, näiteks midagi sellist
ntptrace -n 127.0.0.1: stratum 3, offset -0.001927, synch distance 0.038145 192.168.30.8: stratum 2, offset -0.000066, synch distance 0.020106 192.168.30.15: stratum 1, offset 0.000010, synch distance 0.002270, refid 'GPS'
Kokkuvõte
Kella peaks seadistama väga ettevaatlikult, sest mitmed Unixi süsteemid nõuavad, et kellad töötaksid õigesti. Näiteks deemon cron käivitab programme perioodiliselt. Kui te muudate kella, võib deemonil tekkida kõhklusi. Näiteks ühes vanemas Unixi süsteemis muutis keegi kella 10 aastat tulevikku ja cron üritas käivitada kõiki protsess kümne aasta kohta korraga. Õnneks uuemates versioonides esinevad cron versioonid lahendavad selle probleemi tavaliselt õigesti, kuid siiski tuleks olla ettevaatlik. Suured hüpped tagasi on tavaliselt ohtlikumad kui väiksed edasi.
Autor
Priidu Niit A22