Information Technology | Operating systems » A UNIX rendszer áttekintése

Datasheet

Year, pagecount:2002, 16 page(s)

Language:Hungarian

Downloads:1049

Uploaded:July 03, 2004

Size:194 KB

Institution:
-

Comments:

Attachment:-

Download in PDF:Please log in!



Comments

No comments yet. You can be the first!

Content extract

UNIX 1. Bevezetés: A UNIX operációs rendszer legfőbb jellemzői:  Általános időosztásos (time sharing).  Több felhasználós (multi user).  Több taszkos (multi task).  Hierarchikus az file-rendszer.  Egyetlen gyökér (root) könyvtár van a rendszerben. A különböző cserélhető, fix és hálózaton megosztott állományrendszerek a fa egyes csomópontjaihoz kapcsolhatóak (mount).  A rendszer az állományokat kezelését sem tartalmuk, sem nevük alapján nem különbözteti meg.  A fa struktúrában keresztkapcsolatok (link) hozhatók létre.  Hatékony differenciált állományvédelmi rendszer.  Egységes input/output kezelés az állományok, a hardware eszközök, és a folyamatok között.  Input/output átirányítás, csővezeték szervezés.  Aszinkron folyamatok létesítésének lehetősége.  Rugalmas, könnyen változtatható parancsnyelv.  Hatékony, sokoldalú segédprogramok.  Hardware

független operációs rendszer. 2. A legfontosabb parancs: “man” A UNIX operációs rendszer help rendszerét a “man” paranccsal érhetjük el. A továbbiakban tárgyalt (és a rendszerben található többi parancsról) az alábbi módon kérhetünk segítséget. man <parancs> Magáról a man parancsról is kaphatunk információt az alábbi módon: man man A UNIX leírások 8 fejezetre (kötetre) oszlanak: 1. Általánosan használható programok 2. Rendszerhívások 3. Felhasználói szintű könyvtári függvények 4. Speciális állományok 5. Állományformátumok 6. Játékok 7. Különféle leírások 8. A rendszer karbantartásához szükséges információk Több fejezetben is lehetnek azonos nevű leírások. Pl lehet azonos nevű program és rendszerfüggvény is Ilyenkor az egyértelműség érdekében a fejezet számát is meg kell adni: man <fejezet> <parancs> Kulcsszókra is kereshetünk: man –k <kulcsszó> 3.

Hierarchikus állományrendszer A UNIX operációs rendszernél egy kitüntetett alap állományrendszer van (root partíció), amely a merevlemezen helyezkedik el. Ennek az alap fa struktúrának egyes csomópontjaihoz kapcsolhatunk felszerelhető (mountable) köteteket (merevlemez partíciók, floppy, CDROM, és egyéb cserélhető illetve hálózaton megosztott állományrendszerek). A UNIX file-rendszerében az egyes állományok az alábbi típusúak lehetnek:  Közönséges állomány (plain file)  Speciális állomány (special file)  Katalógus (directory) Ezek közül a katalógusok további, ugyanilyen állományokat tartalmazhatnak. Az alap állományrendszer kezdőpontja is egy könyvtár, a “/” jellel jelzett gyökér (root directory). 3.1 Közönséges állomány A rendszer minden állományt egyszerűen byte-ok véletlenszerűen címezhető szekvenciájának tekinti. A rendszer eltakarja az állományt tároló fizikai eszköz tulajdonságait. Az

állomány mérete az általa tartalmazott byte-ok számával azonos. 3.2 Speciális állomány A UNIX-ban a fizikai berendezések is állományként vannak leképezve. A fizikai eszközökre is állománynévvel hivatkozhatunk. Használatuk során hasonlóan is működnek az állományokhoz (persze az egyes eszközök jellemzőit is figyelembe véve). Ezek az állományok általában a “/dev” könyvtárban helyezkednek el, de máshol is létrehozhatjuk őket. 3.3 Katalógus A katalógus az állományrendszerben egy olyan speciális állomány, amely a bejegyzett állomány-nevek és a hozzájuk tartozó információk között adja meg a leképezést. Minden bejegyzés egy nevet és a hozzá tartozó i-node számot tartalmazza. Az i-node szám egy fizikai helyet jelöl az adathordozón, ahol egy jól definiált információ csomag található, amely tartalmazza az állomány jellemzőit (tulajdonos, security információk, méret, létrehozási/módosítási idő, fizikai

elhelyezkedés). Az i-node-okat a rendszer kezeli A gyökér katalógus több alkatalógust tartalmaz, amelyek további alkatalógusokat tartalmaznak. Így egy hierarchikus fa struktúra alakul ki. Az alkatalógusok nevének elválasztására a “/” jel szolgál Az állománynevekre az egyetlen megkötés az, hogy a “/” jelet nem tartalmazhatják (illetve a különböző implementációknál eltérő megkötések vannak az állománynév hosszára). Az egyes könyvtárak között a felhasználó szabadon mozoghat a “cd” parancs használatával (természetesen a security információk figyelembevételével). Minden katalógus tartalmaz két speciális bejegyzést: “”, “” A “” magát az aktuális katalógust jelenti. A “” az aktuális katalógus szülő katalógusát jelenti, vagyis azt a katalógust amelyben az aktuális katalógust létrehozták. (A gyökérkatalógusnál a “” és a “” is a gyökérre mutat) A “” karakterrel kezdődő bejegyzések

rejtettek, vagyis az egyszerű könyvtárlistán nem szerepelnek. 3.4 Link Mivel a katalógusok csak egy filenév i-node összerendelést tartalmaznak, ezért lehetséges, hogy egy katalógusból több néven, vagy különböző katalógusokból hivatkozzunk ugyanarra az i-node-ra. Ezt a UNIX-ban link-nek hívják Amikor különböző névvel hivatkozunk egy i-node-ra, azt hard link-nek hívják. Ebben az esetben az állomány addig létezik, amíg van rá mutató bejegyzés. Hard link-eket csak egy köteten belül hozhatunk létre Azonban lehetséges ún. szimbolikus link-ek létrehozása is Ilyenkor különböző nevekkel hivatkozhatunk egy katalógus bejegyzésre. Ilyen módon különböző kötetek között is létrehozhatunk linkeket Azonban mivel a link csak egy katalógus bejegyzésre mutat, ezért ha a bejegyzés megszűnik, akkor link nem működik többé. 3.5 Állományrendszerek összekapcsolása és leválasztása A UNIX állományrendszere a root partíción elhelyezkedő

root könyvtárból indul ki. Innen kezdve épül fel a könyvtárak fa struktúrája. Ezt további blokk orientált készülékekkel bővíthetjük ki A “mount” rendszerparanccsal egy már létező könyvtárat egy másik készüléken elhelyezkedő állományrendszerrel (esetleg ugyanazon eszközön lévő másik állományrendszerrel) kapcsolhatunk össze. Ezután a már meglévő könyvtárra való hivatkozások a másik állományrendszer gyökér könyvtárára fognak vonatkozni. Gyakorlatilag a mount parancs a hierarchia fa egy pontját egy teljesen új részfával cseréli fel. A lecserélt pont a kapcsolat megszüntetéséig (umount) elérhetetlenné válik 3.6 Standard fa A UNIX operációs rendszerekben megtalálható fontosabb könyvtárak:  /etc A rendszer konfigurációs állományainak elhelyezésére szolgál.  /bin Rendszerprogramok elhelyezésére szolgál.  /sbin A főbb rendszeradminisztrátori programok elhelyezésére szolgál.  /usr/bin

Közérdekű felhasználói programok elhelyezésére szolgáló katalógus.  /dev A speciális állományok katalógusa.  /tmp Ideiglenes állományok elhelyezésére szolgál. Néhány lényeges UNIX periféria:  /dev/tty* A terminálok nevei.  /dev/hd* IDE winchesterek.  /dev/fd* Floppy drive-ok.  /dev/null Korlátlanul elnyel mindent anélkül, hogy bárhol is tárolná. 3.7 Általános file kezelő parancsok cat - állományok megjelenítése cd - katalógusváltás cp - állomány másolása dd - állománymásoló és konvertáló program df - lemezek foglaltsági állapota du - diszkfoglalás kiíratása find - állomány keresése a fában file - állomány típusának meghatározása fsck - állományrendszer ellenőrzése ln - link létrehozása ls - katalógus listázása mount - kötetek hozzákapcsolása a könyvtárfához mkdir - katalógus létrehozása mv - állomány átnevezése/mozgatása pwd -

aktuális katalógus teljes elérésének kiíratása rm - állomány törlése rmdir - katalógus törlése umount - kötetek lekapcsolása a könyvtárfáról 4. UNIX védelmi rendszere Mint minden többfelhasználós rendszer a UNIX is védi a felhasználók állományait és folyamatait. 4.1 Felhasználói azonosítók Minden felhasználó rendelkezik egy egyedi azonosító számmal (uid = user identifier), és egy vagy több csoport azonosító számmal (gid = group identifier). A felhasználók azonosítása az uid alapján történik A gid segítségével a felhasználók egy csoportjának több jogot lehet biztosítani, mint a többieknek. A felhasználó uid-je és a default gid-je az /etc/passwd állományban vannak eltárolva. A többi gid-je az /etc/group állomány bejegyzései alapján alakul ki Ez az állomány a csoportokhoz rendelt felhasználókat tartalmazza.  Azon felhasználó, akinek az uid-je megegyezik a bejegyzés uid-jével, az a tulajdonos (owner).

(Állományok esetén a chown paranccsal állítható.)  Akinek az uid-je más, de valamelyik gid-je megegyezik a bejegyzés gid-jével az a csoporttárs (group). (Állományok esetén a chgrp paranccsal állítható.)  Akiknek pedig az uid-je és a gid-je egyaránt eltér a bejegyzés uid- illetve gid-jétől, azok a többiek (others). Létezik még egy felhasználó, az úgynevezett kitüntetett felhasználó (továbbiakban su = super-user, a login neve “root”). A su-ra nem vonatkoznak a felhasználók által beállított hozzáférési jogok, a rendszer még a tulajdonosnál is bővebb lehetőségeket engedélyez számára. A su a rendszergazda A rendszer annak alapján ismeri fel, hogy az uidje 0 Jogai gyakorlatilag korlátlanok, éppen ezért igen körültekintően kell használni ezt az uid-et, mert egyetlen rossz mozdulattal az egész rendszert tönkre lehet tenni. 4.2 Állomány és könyvtár jogok A létrehozott bejegyzések hozzáférési jogkörét a

tulajdonosok egyedileg állíthatják be. Egy adott bejegyzésre háromféle engedély adható: olvasási, írási és végrehajtási (katalógus esetén ez utóbbi helyett keresési). Ezek mindegyike külön-külön állítható be magára a tulajdonosra, a csoporttársra és a többiekre. A hozzáférési jogok legegyszerűbben a chmod paranccsal módosíthatók.  Az olvasási jogkör szabályozza, hogy van-e joga az adott felhasználónak az állomány tartalmának megtekintésére (illetve a katalógus tartalmának kilistázására).  Ha egy felhasználó rendelkezik írási joggal egy bejegyzésre, akkor bővítheti, kicserélheti, megváltoztathatja az állomány tartalmát (illetve létrehozhat, törölhet bejegyzést katalógus esetén).  A végrehajtási jog (amely csak állományra vonatkozhat, ha katalógusra vonatkozik, akkor keresési jognak nevezzük) azt jelzi, hogy az adott felhasználó futtathatja-e az állományt. Maga a végrehajthatósági jog

önmagában még nem jelenti azt, hogy az állomány ténylegesen futtatható kódot tartalmaz.  A katalógusokra vonatkozó keresési jog azt jelzi, hogy van-e jogunk a katalógus bejegyzéseinek eléréséhez, használatához. Ha az “ls –l” paranccsal listát kérünk egy könyvtárról, akkor a lista tartalmazza a védelmi jogok jelzését is. A lista első mezőjét az alábbiak szerint kell értelmezni: drwxrwxrwx Ahol az első karakter az állomány típusa: b ha a bejegyzés egy blokk-orientált speciális állomány, c ha a bejegyzés egy karakter-orientált speciális állomány, d ha a bejegyzés egy katalógus, 1 ha a bejegyzés egy szimbolikus link. - ha a bejegyzés egy egyszerű állomány, A következő 9 karakter hármas csoportokra osztható. Az első három az owner, a második a group, a harmadik a other jogait jelenti. A hármas csoporton belül a három karakter sorrendben a következő lehet: "r", "w" és "x". ezek

bármelyike helyén "-" is állhat. Jelentésük pedig rendre az olvasási (read), írási (write), végrehajtási (execution) jogot vagy "- esetén annak hiányát jelenti. (A tulajdonos lehetőségeit ismertető csoportban "x" helyén "s" áll, ha az állomány setuid módban van. Hasonlóképpen a csoporttárs lehetőségeit ismertető csoportban "x" helyén "s" áll, ha a bejegyzés setgid módú. Azonban e módokra jelen jegyzetben nem térünk ki.) 5. Felhasználói felület, shell-ek A UNIX rendszer egyik érdekessége, hogy a felhasználói felületet megvalósító parancsértelmező (shell) egy közönséges felhasználói program. Ez a parancsértelmező nem integráns része az operációs rendszernek, és nem élvez speciális megkülönböztetéseket. Így bárki lecserélheti a sajátját egy másik programra A rendszerbe való bejelentkezéskor a rendszer a login-név (user azonosító) és a jelszó alapján

ellenőrzi a felhasználót, majd a password állomány hozzá tartozó sorának megfelelő mezőjében megadott programot elindítja. Ez rendszerint valamelyik shell (sh, csh, ksh, tcsh stb.), de lehet valami más program is Mindegyik felhasználónak joga van ezt a programot lecserélni (chsh parancs). A jelszót a passwd paranccsal módosíthatjuk Az egyes shell változatok között a különböző kényelmi szolgáltatásokban, valamint a programozói felületükben van eltérés. Ugyanis a UNIX shell-ek nem csupán parancsértelmezők, hanem programozási nyelvek is egyben 5.1 Parancssorok értelmezése A UNIX shell lényegében egy parancsértelmező program, amely beolvassa a felhasználó által begépelt sorokat, és azt más programok végrehajtását előíró kérésekként értelmezi. Egy parancssor a legegyszerűbb esetben egy parancsból és a hozzá tartozó, szóközökkel elválasztott, paraméterekből áll: parancs argl arg2 . argn A parancsértelmező

különálló karaktersorozatokká bontja fel a parancs nevét és argumentumait. Ezután egy beállítható keresési út (PATH) szerint a különböző katalógusokban megkeresi a parancs nevű állományt. Ha sikerült megtalálni, akkor azt végrehajtja. A parancs végrehajtásának befejezését a prompt kiírásával jelzi 5.2 Standard input/output átirányítás A shell által végrehajtott programok eleve három megnyitott állománnyal indulnak. Ezek a 0, 1 és 2 állományleírókhoz vannak hozzárendelve:  0 – standard input  1 – standard output  2 – error output Ezek alapértelmezésben a felhasználó termináljához vannak rendelve, de átirányíthatjuk őket. A “>” vagy “>>” jellel átirányíthatjuk a standard kimenetet. A parancs végrehajtása alatt az 1-es állományleíró a “>” jel után megadott nevű állományra mutat. Például az ls > kimenet parancs létrehozza a “kimenet” nevű állományt és a listát

abba írja. Ha a “>>” jelet használjuk ls >> kimenet akkor az ls parancs kimenetét a “kimenet” állomány végéhez fűzi. A hiba kimenetet a “2>” jelöléssel irányíthatjuk át. Hasonlóan a standard input is átirányítható. Ezt a “<” jellel tehetjük meg A “< bemenet” jelölés azt jelenti, hogy a standard input a “bemenet” nevű állományból jöjjön. 5.3 Csővezeték A UNIX-ban gyakran előfordul, hogy az egyik program kimenetét szeretnénk használni egy másik program bemeneteként. Például ha egy program kimenetét szeretnénk megszűrni, rendezni, tördelni Ezt megtehetjük az előző fejezetben ismertetett módon átmeneti állományok létrehozásával. Azonban a UNIX tartalmaz egy sokkal hatékonyabb eszközt is, amelyet csővezetéknek (pipe) nevezünk. A csővezeték egy olyan speciális állomány, ami egy FIFO-t (First In First Out) valósít meg. Az érdekesség abban van, hogy ez a FIFO állományként

kezelhető: Két állományleíróval hivatkozhatunk rá, egyiken írhatunk bele, a másikon pedig a beírási sorrendben kiolvashatjuk a beírt adatokat. A csővezeték-szervezés lehetőségeinek előnyei:  Nincs szükség ideiglenes állományokra, amit később úgy is letörölnénk.  Mivel a folyamatok "párhuzamosan" futnak, a FIFO-nak nem kell nagynak lenni.  A pipe használata gyorsabb, mivel az a legtöbb memóriában keletkező állományként jelenik meg (egy FIFO csupán 8 Kb).  Az eredmény a cső végén már azelőtt megjelenhet, mielőtt az első program az összes bemenetét feldolgozná. A csővezetéket a shell számára a “|” jellel adhatjuk meg: ls | grep “minta” | sort | more Ebben a példában az ls parancs kimenetéből a grep program kiszűri azokat amelyekben szerepel a “minta” string, majd az eredményt rendezi, és oldalakra tördelve megjeleníti. 5.4 Állománynév-helyettesítés A parancs argumentumában

megadott "*", "?", és "[.]" jelek ún állománynév-helyettesítő jelek Ezek jelentése: • * Nulla vagy tetszőleges számú tetszőleges karakter. • ? Pontosan egy tetszőleges karakter. • [abc] Az "a" vagy "b" vagy "c" karakter egyike. • [m-n] m-n intervallumból egy karakter. Az olyan argumentumok, amelyek állománynév-helyettesítő karaktereket tartalmaznak, állománynevekből álló egyszerű argumentumok sorozatára cserélődnek le. Például “*f”-ből azoknak az aktuális katalógusban található állományneveknek a sorozata lesz, amelyek az “f” karakterekre végződnek. A helyettesítő karakterek közül több is szerepelhet egyidejűleg ugyanabban az argumentumban. Pl: az "[a-z]*" a kisbetűvel kezdődő neveket jelenti. Az, hogy a kifejtő metódust a shell tartalmazza, több előnnyel jár: • A kifejtést megvalósító program csak egyszer szerepel a rendszerben

(helytakarékosság). • A programoknak a kifejtéssel nem kell foglalkozniuk. • A kifejtő algoritmus alkalmazása így bizonyosan mindig egységes lesz. 5.5 Parancshelyettesítés Igen hasznos és érdekes szolgáltatása a UNIX shell-eknek az ún. parancshelyettesítés Ez lehetővé teszi, hogy az egyik program kimenetét a másik program paraméter listájaként használjuk. Ilyenkor a megfelelő parancsargumentumot “`” (visszafelé dőlő aposztróf) párba kell zárni. Például a du `cat parameters.txt` parancs esetén a du parancs megmondja azon file-ok méretét amelyek a “parameters.txt” állományban fel vannak sorolva. 5.6 Parancssorozatok Ha a parancsokat egymás után pontosvesszővel elválasztva írjuk, akkor úgynevezett parancssorozathoz jutunk. Így például az date; ls parancs először kiírja az aktuális dátumot, majd kilistázza a pillanatnyi katalógust. Parancssorozatot nem csak pontosvessző segítségével alkothatunk, hanem a “||”

és a “&&” jelekkel is. Ekkor egy feltételesen végrehajtódó sorozathoz jutunk. A “||” és a “&&” jelek jelentése azonos a C nyelvben megszokottal Vagyis a parancs1 || parancs2 parancs3 && parancs4 sorozatból a parancs2 csak akkor fog végrehajtódni, ha a parancs1 hamis megállási státusszal állt meg. A parancs4 pedig csak akkor fog végrehajtódni, ha a parancs3 igaz megállási státusszal állt meg. 5.7 Szinkron és aszinkron folyamatok Az eddigi példákban az egymás utáni parancsok egymást követve szinkron módon hajtódtak végre. Lehetőség van azonban aszinkron végrehajtásra is. Ha egy parancsot az “&” jel követ, akkor a shell nem várja meg a parancs befejeződését, hanem a prompt jel kiadásával újabb parancsra várva azonnal visszajelentkezik, miközben a kiadott parancs aszinkron módon a shell-től leválasztva fut tovább. Pl: find / -name ‘core’ > eredmeny & Ebben az esetben azonnal a shell

azonnal visszatér és új parancsra vár. A file keresés a háttérben fut és az eredményt az “eredmeny” állományba írja. (A háttérben futó folyamatok kimenetét érdemes file-ba irányítani, hogy ne keveredjen össze más parancsok kimenetével.) (A parancs futatásakor a rendszer kiír egy ún. process ID-t amellyel hivatkozhatunk később a háttérben futó folyamatra.) 5.8 Csoportosítás A parancsokat csoportosíthatjuk is zárójelekkel. Pl: (date; ls) > lista & Ez a parancs kiírja a dátumot és a file listát a “lista” állományba, és mindezt a háttérben teszi. 5.9 Shell script-ek A shell scriptek legegyszerűbb formája, amikor egymás után következő parancssorokat egy állományba írunk, majd azt lefuttatjuk. Például egy “parancsok” állományba az alábbi sorokat írjuk: mv kimenet kimenet2 date > kimenet Ezek után a sh parancsok paranccsal, vagy ha futási jogot adunk az állománynak, akkor csak a nevének beírásával is

végrehajthatjuk a parancsokat. Azonban a shell egyben programozási nyelv is. A shell script tartalmazhat beépített parancsokat, vezérlési szerkezeteket is. (Parancssorokba is írhatunk, csak ez kényelmetlen, ezért nem gyakran használt megoldás) Például írjuk ki hogy hány file van a katalógusban: #!/bin/bash # # file szamlalo # n=0 for i in * do if [ -f $i ] then n=`expr $n + 1` fi done 6. Fontosabb segédprogramok A UNIX rendszer számtalan egyszerű segédprogramot tartalmaz. Ezek a programok nagyrészt egyszerű feladatokat látnak el, viszont leggyakrabban ezekre van szükség a mindennapi feladatok során. Ugyanakkor több kis segédprogram kombinációjával komolyabb feladatokat is meg lehet oldani. Gyakran előfordul a szöveges állományok egymáshoz másolása, rendezése, keresés valamilyen minta alapján, egyszerű helyettesítés, stb. 6.1 A fontosabb segédprogramok: (A zárójelekben szereplő számok a man fejezetekre utalnak.) awk(1) - riport

generáló nyelv cat(1) - állományok összefűzése és kiíratása cmp(1) - két állomány összehasonlítása comm(1) - két állomány közös sorainak kiírása dc(1) - asztali számológép dd(1) - állomány konvertálása és másolása diff(1) - szöveges állományok soronkénti összehasonlítása expr(1) - kifejezés kiértékelése file(1) - állomány típusának meghatározása find(1) - állományok keresése nevük vagy tulajdonságaik alapján grep,egrep,fgrep(1) - állományban minta szerinti keresés od(1) - oktális, decimális, hexadecimális és ASCII dump perl(1) - riport generáló nyelv pr(1) - állományok nyomtatáshoz való előkészítése sort(1) - állományok sorainak rendezése és egybeolvasztása split(1) - állomány darabokra tördelése strings(1) - látható karakterekből álló stringek keresése tee(1) - standard kimenet másolása tr(1) - karakter átalakítása uniq(1) - állomány ismétlődő

sorainak kezelése wc(1) - kiírja a sorok, szavak és karakterek számát 6.2 Reguláris kifejezések A szöveges bemenetek feldolgozása során sokszor kell mintát illeszteni. Ezt a feladatot úgy könnyítették meg, hogy egységesítették a megadás szintaxisát. Ezt hívjuk reguláris kifejezésnek Egy szövegmintában általában minden karakter önmagát jelenti, azaz a mintában az adott helyen elő kell fordulnia, de van néhány speciális jel, ami valami mást jelent. Ezekből nézzük a legáltalánosabbakat: c Maga a c karakter, amennyiben c nem speciális karakter. c A c karakter, kivéve: újsor-jel, számjegy, "(" vagy ")". ^ Sor eleje. $ Sor vége. . Egy db akármilyen karakter (kivéve az újsor-jel). [abc] Egy karakter az "abc"-ből. [^abc] Bármely karakter, amely nem "a", "b", vagy "c" Pl.: cat szoveg | grep “^minta” - azokat a sorokat írja ki, amelyeknek elején a “minta”

szó szerepel ls -l | grep “^d” - a long listából azokat a sorokat írja ki, amelyek “d” betűvel kezdődnek, vagyis könyvtárak. 6.3 Awk riport generáló (röviden) Az awk-t sokszor programozási nyelvként is szokták emlegetni, ennek ellenére elsősorban nem programfejlesztő eszköz, hanem egy általános riport generáló nyelv, amely szöveges inputot tud feldolgozni. Segítségével igen gyorsan és hatékonyan elvégezhetők pl. adatelőkészítési feladatok, vagy egyszerűbb utó-feldolgozási munkák is Szintaktikája nagyon hasonlít a C nyelvhez. Az awk soronként olvassa az input-ot, és megpróbálja az egyes sorokat, vagy azok részeit a megadott mintákra illeszteni. Egy awk program általános szerkezete a következő: BEGIN { kezdeti tevékenység } minta 1 { tevékenység 1 } minta 2 { tevékenység 2 } minta n { tevékenység n } END { utolsó tevékenység } A bemenetről beolvasott sorokat az awk darabokra töri. Ezen darabokra mind a

mintában mind a tevékenységekhez tartozó utasításokban $1, $2, néven ill. a teljes sorra $0 néven lehet hivatkozni Ha a bemenetről beolvasott sor illeszkedik valamelyik mintára, akkor végrehajtódik a hozzátartozó tevékenység. Ezután a mintaillesztés folyatódik a következő mintával. A BEGIN-hez ill END-hez tartozó tevékenység az első file feldolgozása előtt ill. az utolsó file feldolgozása után hajtódik végre (Ezek bármelyike elmaradhat) A tevékenység C nyelvhez hasonló utasításokat tartalmazhat. Ha a tevékenység elmarad, akkor a beolvasott sor változtatás nélkül kiíródik a standard outputra. Az awk egyik legegyszerűbb és leggyakoribb használata, amikor egy szövegből egy vagy több oszlopot akarunk kiszűrni. Nézzünk erre egy példát: ps –A | awk ‘{ print $1 }’ A ps parancs kilistázza az összes futó alkalmazás adatát. Ebből a kimenetből az awk segítségével csak az első oszlopot írjuk ki. 7. X (grafikus

felhasználói felület) A rendszer egyik legfontosabb eleme a grafikus szolgáltatásokat nyújtó - egy vagy több grafikus képernyőt, billentyűzetet és pozícionáló eszközt (egér, tablet stb.) magába foglaló - munkahely, X terminológiával display A rendszer működése a kliens - szerver modellen alapul: A grafikus munkahely szolgáltatásait egy a munkahely eszközeit vezérlő szerver programon keresztül vehetik igénybe a kliens programok. Egy kliens egyszerre több szerverrel is tarthatja a kapcsolatot, ill. egy szerver több klienst is ki tud szolgálni egyidőben A kliens és a szerver a hálózat különböző pontjain helyezkedhet el. A kommunikáció egy ún X protokoll felhasználásával történik, ami magasszintű protokoll és egy megbízható adatátvitelt biztosító alacsonyabb szintű protokoll (pl. TCP/IP) meglétét feltételezi. Egy (X) display-hez több grafikus megjelenítő (képernyő) is tartozhat Ezeket screen-eknek nevezzük Több screen

esetén is csak egyetlen billentyűzet és egy pozícionáló eszköz (pl. egér) tartozik a display-hez, ami az egyik képernyőről a másikra áthúzható. A kliens programok adatai különböző ablakokban - window - jelennek meg. Természetesen egy klienshez több window is tartozhat. Az ablakok az X szerverben mint erőforrások - resource -jelennek meg Hasonló szerver erőforrás pl. a font, cursor, grafikus környezet stb A szerver erőforrások a hálózati forgalom csökkentésének egyik alapeszközeként szolgálnak, ugyanis a kliens az erőforrások rövid azonosítójával képes hivatkozni a szerverben megvalósított bonyolult adatstruktúrákra. 7.1 Window manager Fontos filozófiája az X rendszernek, hogy a kliensek nem vezérlik közvetlenül az ablakok méretét ill. pozícióját Az ablakok elhelyezkedését, méretét, átfedését egy speciális kliens program, a window manager vezérli. Érdekessége az X rendszernek, hogy valójában a window manager program

is éppen olyan kliens, mint a többi kliens program (picit több joggal a szerver felé), és bármikor lecserélhető másikra, sőt nem is feltétlenül kell léteznie. Az X rendszer tervezői még az ablakkezelési stratégiát sem határozták meg, így például azt sem, hogy egyáltalán átfedhetik-e egymást az ablakok vagy sem, vagy pl. mikor és hogyan kerülnek át az input események (input focus) az egyik ablakból a másikba. Ennek következtében több ablakkezelő is elterjedt:  twm (Tab Window Manager)  fvwm (Virtual Window Manager)  fvwm2  olwm (Open Look Window Manager)  CDE (Common Desktop Environment)  KDE  Gnome 7.2 Eseményvezérlés Az X rendszer eseményvezérelt elven működik, ami főleg programozási szempontból érdekes. A kliens program különböző eseményekre reagál, mint pl. felhasználói felületről érkező beavatkozás, vagy küldhet egy másik program is eseményt. 7.3 Az X indítása, használata

Elsőként nézzük a rendszer indítását. Alapvetően két esetet különböztetünk meg:  Ha az X szervert a saját gépünkön futtatjuk, akkor a szerver és a window manager elindításáról kell gondoskodnunk. A szerver elindítását xinit paranccsal tehetjük meg (linux-ok alatt a startx parancsot használhatjuk). Ez a szerver elindítása után végrehajtja a felhasználó katalógusában lévő xinitrc állományt Ennek hiányában a rendszergazda által beállított default konfiguráló script-et. Az alapértelmezett beállítás általában tartalmazza a rendszerjellemzők beállítását. Ezek után végrehajtja a felhasználó Xclients script-jét, ennek hiányában a rendszergazda által alapértelmezett window manager-t indítja el. Vagyis a felhasználó az .Xclients állományában beállíthatja az általa választott window manager-t, esetleg lefuttathat más programokat  Ha gépünket csak kliensként használjuk, és kapcsolódni szeretnénk egy X

szerverhez, akkor az alábbiakat kell megtennünk. Az X -query <szervernév> paranccsal el kell indítanunk a klienst és kapcsolódni vele a szerverhez. A kapcsolatfelvétel rendszerint az XDMCP (X Display Manager Control Protocol) használatával történik. Ekkor a szerver gépen futnia kell az xdm nevű programnak Ez a rendszergazda által beállított konfigurációtól függően fölajánlja az elérhető X szerverek listáját, vagy azonnal a login képernyőjét adja. A felhasználó azonosítása után vagy a felhasználó könyvtárában található .xsession állományt, vagy a rendszergazda által beállított default állományt hajtja végre. Mind az xinit, mind az xdm a végrehajtott script futásának végére vár. Ha ez a script véget ért, az a felhasználó X használatának végét jelenti. Vagyis az xinit megállítja, az xdm pedig reseteli az X szervert Az xinit, (Xclients,) .xsession script-ek egyszerű parancsállományok A felhasználó által kívánt

beállítások, programok indítása és a window manager indítása szerepel benne. Nézzünk néhány példát: # példa X init script xclock –geometry 50x50-0+0 –bw 0 & xterm –geometry 80x24+0+0 & fvwm Ebben a példában elindítjuk először a háttérben az xclock programot a megadott méretben és pozícióban. Ez után az xterm programot. Végül indítjuk az fvwm window manager-t Amikor ez véget ér, akkor ér véget a script, és egyben a felhasználó kapcsolata. Általában ez, a script végének a window manager végéhez kötése a leggyakoribb # példa X init script fvwm & xclock –geometry 50x50-0+0 –bw 0 & xterm –geometry 80x24+0+0 Ebben az esetben a window manager a háttérben fut és a felhasználó kapcsolatának a végét a xterm programhoz köti. Ha kilépünk az x-terminálból az a kapcsolat végét jelenti Ennél a beállításnál lehetőségünk van a window manager menet közbeni lecserélésére is. Vagyis leállíthatjuk a

window manager-t és indíthatunk helyette egy másikat. Ez után következhet a különböző kliens programok elindítása. Ezek egyes indítási paramétereket egységesen kezelnek. Ezt részben az Xlib biztosítja, részben a megfelelő programozási szokások illetve eszközök Így pl minden X alkalmazásnak indítási paraméterként megadható az induló ablak mérete, pozíciója, betűi, színe, stb. Talán a legfontosabb indítási paraméter a display beállítása, ahol az alkalmazás grafikus felülete megjelenik. Ez vagy a -display kapcsoló után adható meg, vagy ennek hiányában a DISPLAY környezeti változóban. A display neve három részből tevődik össze: <host név>:<szerver sorszám>.<képernyő sorszám> A host név annak a számítógépnek ill. berendezésnek a hálózati a neve, amelyen a szerver program fut A szerver sorszám az azonos gépen futó szerver programok megkülönböztetésére szolgál (a 0 az első). A képernyő

sorszám pedig a szerver által kezelt képernyő sorszáma. (szintén 0 az első) de ez elmaradhat A következő példában az xterm programot indítjuk el az linux.autbmehu gép 0 szerverének 0 képernyőjére 80x24-es méretben: xterm -display linux.autbmehu:0 -geometry 80x24 Nem szükséges külön megadni a display nevét, ha a DISPLAY környezeti változó be van állítva. Pl: export DISPLAY = linux.autbmehu A DISPLAY környezeti változót rendszerint az xinit, vagy az xdm beállítja a szerver nevének megfelelően. Abban az esetben azonban, amikor egy helyi számítógép grafikus felületén keresztül egy másik számítógépre jelentkezünk be (pl. telnet, vagy ssh segítségével), akkor a távoli gép DISPLAY változója nem állítódik be Ilyenkor ezt kézzel kell beállítani. Ez azonban nem elég ahhoz, hogy a távoli gépen indított kliens program a helyi X szerverhez kapcsolódhasson. Rendszerint ugyanis biztonsági okokból a munkaállomások szerverei úgy

vannak konfigurálva, hogy csak velük azonos gépen futó klienseket hajlandóak kiszolgálni. Egészen pontosan egy adatbázis tartalmazza azoknak a gépeknek a nevét, amelyek kapcsolatba léphetnek a szerverrel. Ezt az adatbázist az xhost program segítségével lehet módosítani. Így pl az xhost +host engedélyezi xhost - host pedig megtiltja a host nevű gépen futó kliensek számára a kapcsolatfelvételt. Ezek után nézzünk egy példát arra az esetre, ha grafikus programokat szeretnénk futtatni egy gépen, amely különbözik az általunk használt szervertől. A “host1” lesz az általunk használt gép a “host2” pedig a távoli gép amelyen a programot futtatni szeretnénk: (A “host1>” és a “host2>” az egyes gépeken a prompt-ot jelenti.) host1> xhost + host2 host2> export DISPLAY=host1:0 host2> netscape & A kliensek indításánál láttuk, hogy bizonyos indítási paramétereket a kliens programok egységes formában kezelnek,

és ezzel a kliens megjelenése a felhasználó által módosítható ill. befolyásolható Az X rendszer a felhasználói kívánságok ill. előírások (felhasználói preferenciák) megadására a következő módszereket definiálja:  programhoz tartozó leíró állományok (app-defaults)  login katalógusban elhelyezett .Xdefaults állományok  gyökér ablakhoz tartozó erőforrás adatbázis  indítási paraméterek A különböző módon megadott értékeket egy közös adatbázisba gyűjti a rendszer, és az Xlib ún. erőforrás kezelő (resource manager) rutinjaival kezeli, így biztosítja azok egységes kezelését.  A programhoz tartozó leíró állományok a /usr/lib/X11/app-defaults katalógusban a programmal azonos néven találhatók (pl: /usr/lib/XI1/app-defaults/XTerm). Ezt az állományt rendszerint az alkalmazás készítője készíti el, és alkalmazás részét képezi. Ennek módosításával a rendszergazda befolyásolni tudja

egy-egy alkalmazás általános megjelenését ill. viselkedését  A felhasználói katalógusban elhelyezett .Xdefaults állomány segítségével maga felhasználó is meg tudja adni a saját beállításait.  Hasonlóan a felhasználó egyéni preferenciáit tartalmazza a gyökér ablakhoz tartozó adatbázis is, amelybe az xrdb adatbázis-kezelővel lehetséges adatokat bevinni. Az egyes preferencia leírók feldolgozási sorrendje olyan, hogy az indítási paraméterekkel megadott érték prioritása a legnagyobb. Ezt követi a gyökér ablak adatbázisa, majd a Xdefaults állomány Leggyengébb prioritással az app-defaults állományok szerepelnek. Az erőforrások megadása igen egyszerű szintaxissal történik. Nézzünk meg egy minta Xdefaults állományt: xterm.VT1OOscrollBar: true xterm*background: red xclock.clockhands: blue Az erőforrást az alkalmazás neve, és az erőforrás megnevezése azonosítja. Ezt követi az erőforráshoz előírt

preferencia értéke. Lehetőség van szabad paraméter megadására is a csillag karakter segítségével A fenti példában az xterm alkalmazás VT100 nevű objektumának scrollbar erőforrását bekapcsoltuk, és az alkalmazás összes ablakobjektumának piros háttérszínt adtunk. Az xclock esetében pedig a mutatók színét kékre állítottuk Azt, hogy egy alkalmazás milyen erőforrásokkal rendelkezik, és azok milyen értékeket vehetnek fel, az adott alkalmazás felhasználói leírásából tudhatjuk meg. Sokszor ezen leírások hivatkoznak az adott alkalmazást felépítő ún. widget-készlet erőforrásaira is Ezek állítása rendszerint már mélyebb X programozói ismereteket igényel