Bashis ajatsooni, kuupäeva ja kella seadistamine

From ICO wiki
Revision as of 01:49, 2 December 2012 by Pniit (talk | contribs)
Jump to navigationJump to search

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)

Riistvarakella seaded

Süsteemikell 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 süsteemikell võib taha jääda. Kuna riistvarakell käib ise, on see palju täpsem.

Riistvarakella 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 riistvarakella kellaaeg.

Riistvarakella kella ja kuupäeva on võimalik järgmiselt seadistada.

hwclock --set --date="1 Jan 2012 15:47:51"

Tulemus: Riistvarakella kellaajaks määratakse 15:47:51 ja kuupäevaks 1. Jaanuar 2012.

Kui riistvarakell ja süsteemikell näitavad erinevat aega, on neid võimalik väga lihtsate käskude abil samastada.

hwclock –systohc

Tulemus: Riistvarakell samastatakse süsteemikellaga.

hwclock –hctosys

Tulemus: Süsteemikell samastatakse riistvarakellaga.

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 protsesse 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.

Kasutatud kirjandus

http://www.garron.me/linux/set-time-date-timezone-ntp-linux-shell-gnome-command-line.html

Autor

Priidu Niit A22