Operatsioonisüsteemi Unix põhimõisted Ajaloost 1965 Multics - Bell Laboratories 1969 Ken Thompson, Dennis Ritchie - UNIX projekt 1970 - realisatsioon PDP 7 arvutile, Bell Lab. 1973 Keel C. Realisatsioon PDP 11 arvutile. D. Ritchie 1975 Bell Lab. annab UNIXi ülikoolidesse 1977 Unix ver.7 1979 Berkeley Software Distribution (BSD) UNIX, csh (c-shell), Univ. Berkeley 1983 UNIX System V - AT&T (kaubamärk) sh - Bourne shell (Steve R. Bourne) - standardne Unix versioonid BSD UNIX (Berkeley, California) System V (AT&T) ULTRIX (Digital Equipment Corp.) AIX (IBM) IRIX (Silicon Graphics) HP-UX (Hewlett-Packard) SunOS (Sun), Solaris (Sun Sparc) SCO Unix (System V PC-del) Linux (vabalt levitatav PC-del) FreeBSD (vaba) ... Unix põhiomadused Palju kasutajaid (multi-user) Palju protsesse (multitasking) Sõltumatus riistvarast (suhteline) Kihiline ülesehitus Konfigureeritav iga kasutaja jaoks eraldi Erinevad käsuinterpretaatorid (shell) - sh, csh, tcsh, ksh, zsh, ... Hierarhiline failisüsteem Rikkalikult tekstitöötlusvahendeid Arenenud vahendid tööks võrgus Kasutajad, õiguste jagamine Eriõigused - süsteemi administraator (superkasutaja) - root Kasutajad jagatud rühmadesse, õigused kolmel tasemel: Kasutaja ise Teised samasse rühma kuuluvad kasutajad Kõik ülejäänud kasutajad Iga kasutaja jaoks tuleb määrata: Kasutajanimi (antud süsteemis unikaalne, soovitavalt ASCII väiketähed) Rühm(ad), millesse kasutaja kuulub Salasõna (kasutaja muudab selle kohe tunnuse saamisel) Algselt käivitatav käsuinterpretaator Kodukataloog (antud kasutajale kuuluv kataloog failisüsteemis) Muu administraatori määratav info (täisnimi, tel. jne.) Seansi alustamine ja lõpetamine Seansi alustamine login: kasutajanimi (reavahetus lõppu) Password: parool (ei näidata ekraanil) Terminaali tüübi valimine dumb ansi vt100 vt220 xterm ... Seansi lõpetamine logout või exit Parooli muutmine passwd (küsib vana parooli ja uut 2 korda) Mõnes NIS administreerimissüsteemis nispasswd (suhtleb samal moel) (sel juhul vt. ka keylogin ja chkey ) Failid, kataloogid, seadmed Failisüsteem on organiseeritud puuna, füüsilised kettaseadmed pole lihtkasutajale olulised - failisüsteemi ehitamine (mounting) on üldjuhul administraatori töö. Andmete (failide) lugemiseks/kirjutamiseks/otsimiseks peab teadma kataloogi, milles andmed paiknevad. Kataloog (directory): failisüsteemi loogiline osa, üks tipp kataloogide puus. Igal kataloogil on omanik ja juurdepääsuõigused. Juurkataloog (root directory, nimega / ): kataloogide puu juur, failisüsteemi algus. Alamkataloog (subdirectory): iga kataloog võib failide kõrval sisaldada ka alamkatalooge - nende nimed olgu üksteisest erinevad. Kodukataloog (home directory, C-shellis nimega ~ ): igale kasutajale määratakse kindel "lähtepunkt" failisüsteemis. Jooksev kataloog (working directory, current directory, nimega "punkt": . ): parasjagu aktuaalne kataloog, algselt enamasti kodukataloog. Muutmiseks käsk cd (edaspidi pikemalt). Ülemkataloogi (parent directory) nimi on "kaks punkti": .. Tee (path) - liitnimi, millega määratakse kataloogi asukoht puus (eraldajaks / ): Absoluutne tee - algab juurkataloogist ( /... ) Suhteline tee - algab kodukataloogist ( ~... ), jooksvast kataloogist ( ./ ... ) või ülemkataloogist ( ../ ... ) Näiteks: /usr/local/lib (absoluutne) ~/Mail (kodukataloogist lähtuv) ./bin (jooksvast kataloogist alla) bin (sama, programmide käivitamise koha pealt siiski erinev) ../../programs (jooksvast kataloogist üles) Failid - kõige üldisem jaotus: tekstifailid (text); kahendfailid (binary). Igal failil on omanik ja juurdepääsuõigused. Nimed on suhteliselt vabalt valitavad, suur- ja väiketähed olulised. Punktiga algavad nimed "peidetud". Käsuinterpretaatori erisümboleid (metamärke) pole soovitav nimedes kasutada (täpsustame hiljem, tähed-numbrid-allakriips sobivad). Hoiduda: & ; | * ? ` " [ ]( ) $ < > { } % ! # @ \ Seadmed - erilised failid /dev kataloogis. Loogilist vahet failide ja välisseadmete vahel UNIXis ei ole. Näit. /dev/audio Link - analoog MS Windows "shortcut" Lisaks alamkataloogidele, failidele ja seadmetele võivad kataloogis olla veel viidad (link) teistele objektidele: see on üks võimalus objektide jagamiseks ning sünonüümide tekitamiseks. Unix - juurdepääsuõigused r - read: faili, kataloogi lugemine w - write: faili muutmine, kataloogi muutmine, s.t. failide kirjutamine ja kustutamine kataloogist x - execute: käsufaili või programmi käivitamine, nime otsimine kataloogist Näit. kui kataloogi jaoks pole lugemisõigust, aga on otsimisõigus, siis saab selle kataloogi failidele ligi, kui teada faili täpset nime. Need kolm õigust määratakse iga taseme jaoks (user, group, others). Juurdepääsuõiguste muutmine on omaniku (aga ka administraatori) privileeg. Õiguste näitamiseks on kasutusel 10-märgiline esitus, õiguste muutmiseks saab kasutada kaheksandkoodi ning sümbolesitust. Kõik nimetatud viisid on kokku võetud järgmises tabelis: -r-------- 400 u+r --w------- 200 u+w ---x------ 100 u+x ----r----- 040 g+r -----w---- 020 g+w ------x--- 010 g+x -------r-- 004 o+r --------w- 002 o+w ---------x 001 o+x Näiteks: drwxr-x--- - kataloog, millele omanikul on kõik õigused, rühmal on lugemise ja otsimise õigus, kõigil teistel pole mingeid õigusi. Kood 750. Esimene märk näitab faili tüüpi (d - kataloog, - - tavaline fail, l - link (BSD), b, c - seadmed jne) Õiguste komplekti näeb käsuga ls -l (edaspidi pikemalt). Käsurida Kasutaja poolt käsureale sisestatavaid käske, samuti käsufaile (nn. shell-programmid, skriptid, stsenaariumid, ...), täidab käsuinterpretaator ("koorik") - shell. Enne käsu täitmist asendatakse käsureas olevad metamärgid vastavalt nende tähendusele. On olemas erinevaid käsuinterpretaatoreid - sh, csh, ksh, zsh, tcsh, ... Käsu üldkuju Lihtsamal juhul koosneb käsurida käsu nimest (näit. ls), täpsustavatest lippudest e. suvanditest (flags, näit. -l) ning muudest parameetritest (näit. failinimed). käsk -lipud parameetrid ls -l /usr standardsisend (0 - stdin) standardväljund (1 - stdout) veaväljund (2 - stderr) Üldjuhul töötleb käsk mingeid sisendandmeid ning väljastab tulemuse ja võimalikud veateated väljunditesse. Standardsisendiks on klaviatuur, standardväljundiks ja veaväljundiks terminaal. Sisendit ja väljundeid saab ümber määrata. Märkus: kui sisend ja/või väljund on kahendfailid, siis antakse failinimed vahel lippude abil (tavaliselt -f ja -o lipud). Sageli esinevad suvandid (lipud) - nimi järgnev failinimi vms. võib alata miinusmärgiga -l long, pikk listinguvorm -f failinimi sisendfail -o failinimi väljundfail -i interactive, töö dialoogis -f force, nõusolekut mitte küsida -R -r recursive, rakendada rekursiivselt alampuule -a all, kõik (ka need, mida vaikimisi ei vaadelda) Märkus: puudub standard, soovitav on iga käsu juures enne üle kontrollida (näit. f-lipp esineb juba siin kahes tähenduses). r-lipp tähendab sageli ka read. Eriti ohtlik võib olla i-lipu kasutamine (vahel tähenduses ignore). Käsuinterpretaatori metamärgid, käsk echo Enne käsu täitmist asendab käsuinterpretaator kõik käsureal olevad erisümbolid vastavalt nende tähendusele. Metamärgid * ? [ ] on kasutusel failinimede genereerimiseks: * väljendab mistahes märgijada (s.h. tühja) ? väljendab mistahes (täpselt üht) märki [märgid] lubab valida ühe kantsulgudes olevatest märkidest Näit. Kui jooksvas kataloogis on failid kiri1 kiri2 kiri10 Ptk4.txt ptk5.txt .login siis genereeritakse nimesid järgmiselt: * kiri1 kiri2 kiri10 Ptk4.txt ptk5.txt kiri? kiri1 kiri2 kiri* kiri1 kiri2 kiri10 [Pp]tk* Ptk4.txt ptk5.txt *.* Ptk4.txt ptk5.txt .* .login Ülakomade ' abil saab teksti "peita" laiendamise eest 'siin sees ei ole * ? jne. metamärgid' Käsu täitmise tulemus (standardväljund) saadakse käsureale "tagurpidi ülakomade" abil: `käsk` annab tulemuseks selle käsu väljundi. Muutujate väärtusi saab lugeda metamärgi "dollar" abil: $PATH annab tulemuseks muutuja PATH väärtuse. Et testida metamärkide asendamist võib kasutada käsku echo, mis peegeldab oma argumendi(d) standardväljundisse: echo käsurida toimel tehakse kõik asendused käsureas ning kuvatakse see siis standardväljundisse. Käsud dokumentatsiooni vaatamiseks man - täisinfo käsu vm. kohta. Juhendid on organiseeritud peatükkide kaupa. vt. ka xman man käsk - tavaline kuju -k võtmesõna võtmesõna järgi -f failinimi süst. faili kohta -s ptk.nr käsk ptk. äranäitamine whatis käsk - lühiinfo käsu kohta apropos võtmesõna - info otsimine võtmesõna järgi whereis failinimi - käsuga seotud failide otsimine which käsk - käsu asukoha täpsustamine (kas alias, millises kataloogis) Märkus. Kõik käskude kujud selles konspektis mittetäielikud (lihtsustatud). Täisinfo kõigist võimalustest ja konkreetse süsteemi iseärasustest saab käsuga man. Käsud tööks kataloogide ja failidega ls - kataloogi sisu näitamine pwd - jooksva kataloogi nime näitamine cd - jooksva kataloogi muutmine cat - faili(de) väljastamine more (less) - faili kuvamine peatustega mkdir - kataloogi loomine rmdir - kataloogi eemaldamine cp - failide kopeerimine mv - faili või kataloogi ümbertõstmine(ümbernimetamine) rm - failide eemaldamine ln - viida (link) loomine chmod - õiguste muutmine chown - omaniku muutmine ls [-alrtuR ...] [ failinimi ... ] r - reverse, tagurpidi järjekorras t - viimase muutmise aja järgi u - viimase kasutamise aja järgi .... pwd - print working directory cd [kataloog] - change directory, ilma argumendita kodukataloog cat failinimi ... - ühendada failid standardväljundisse (sageli tekstifailid) more [failinimi ...] - sama dialoogiga tühik - uus lehekülg reavahetus - uus rida b - lehekülje võrra tagasi (ei pruugi alati töötada, vt. ka less) q - lõpetada /regulaaravaldis - otsimine h - help Failinime puudumisel standardsisend. mkdir kataloog ... - luua kataloog(id), eeldab otsimis- ja kirjutamisõigusi ülemkataloogis. Tekivad . ja .. rmdir kataloog ... - eemaldada kataloog(id). Eemaldab ainult tühja kataloogi (vrd. rm -r ) cp [-i] lähtefail tulemusfail lähtefail ... kataloog mv [-if] lähtefail tulemusfail lähtefail ... kataloog lähtekataloog tulemuskataloog rm [-rfi] failinimi ... - eeldab kirjutamisõigust vastavas kataloogis -r - eemaldab kataloogid ning nende sisu rekursiivselt (ohtlik!) ln [-s] failinimi [viit] failinimi ... kataloog Kui viit puudub, siis jooksvasse kataloogi sama nimega. chmod õigused failinimi... chown uusomanik failinimi ... Käske chmod ja chown täidab omanik (või root). Õigused (vt. ka eespool): + - anda õigus - - võtta õigus ära = - anda täpselt määratletud õigused, võttes kõik ülejäänud ära r - read w - write x - execute s - set user ID - ajutine omanikumuutus programmi täitmise ajaks u - user g - group o - others a - all ( a = ugo ) Näit. chmod u=rwxg=rxo= lecture chmod 750 lecture Töö mõnede välisseadmetega Multikasutusest tuleneb ressursside jaotamise vajadus - järjekorrad, lukud, jpms. lpr - väljastamine printerile lpq, lpstat - printeritööde järjekorra vaatamine (vt. ka lpc status) lprm - printeritöö eemaldamine järjekorrast volcheck - flopiketta monteerimine eject - flopiketta eemaldamine mtools (mcd, mdir, mcopy, mmove, mren, mdel, mdeltree, mmd, mrd, mtype, mformat, mattrib, mbadblocks, minfo, mlabel, ...) - MS-DOS käskude analoogid Unixile (vahel lihtkasutajale keelatud) lpr [-Pprinter] [-Ttitle] [filename ... ] (lubatud on veel palju mitmesuguseid lippe) Eeldab printeri olemasolu ja kasutaja õigust printerile väljastada. Printeritöö omanik võib numbri järgi töö eemaldada (numbrid vt. lpq abil): lprm number ... volcheck - (Solaris) monteerib flopiketta failisüsteemi /floppy/noname/ (vms.) kataloogiks eject - annab flopiketta tagasi, kui see pole kasutuses (näit. jooksva kataloogina).