TI: UNIX alapismeretek AU: Rideg Márton (rmsoft@ludens.elte.hu) DT: oktatási segédlet PD: 1995/03 SO: URL: http://grafi.elte.hu/~rmsoft/unix_alapok/ KW: UNIX KW: operációs rendszerek //////////////// MAGYAR ELEKTRONIKUS KÖNYVTÁR \\\\\\\\\\\\\\\\ Ez a dokumentum a Magyar Elektronikus Könyvtárból származik. A szerzői és egyéb jogok a dokumentum szerzőjét/tulajdonosát illetik (amennyiben az illető fel van tüntetve). Ha a szerző vagy tulajdonos külön is rendelkezik a szövegben a terjesztési és felhasználási jogokról, akkor az ő megkötései felülbírálják az alábbi megjegyzéseket. Ugyancsak ő a felelős azért, hogy ennek a dokumentumnak az elektronikus formában való terjesztése nem sérti mások szerzői jogait. A MEK üzemeltetői fenntartják maguknak azt a jogot, hogy ha kétség merül fel a dokumentum szabad terjesztésének lehetőségét illetően, akkor töröljék azt a MEK állományából. Ez a dokumentum elektronikus formában szabadon másolható, terjeszthető, de csak saját célokra, nem-kereskedelmi jellegű alkalmazásokhoz, változtatások nélkül és a forrásra való megfelelő hivatkozással használható. Minden más terjesztési és felhasználási forma esetében a szerző/tulajdonos engedélyét kell kérni. Ennek a copyright szövegnek a dokumentumban mindig benne kell maradnia. A Magyar Elektronikus Könyvtár elsősorban az oktatási/kutatási szférát szeretné ellátni magyar vagy magyar vonatkozású public domain szövegekkel. A MEK-ről a MEK-L@huearn.sztaki.hu e-mail címen lehet információkat kapni és kérdéseket feltenni. \\\\\\\\\\\\\\\\ HUNGARIAN ELECTRONIC LIBRARY //////////////// UNIX ALAPISMERETEK =================== Tartalomjegyzék --------------- 1. A fájlrendszer 1. Általános jellemzők 2. Névkonvenciók 3. Általános könyvtárnevek 4. A fájlrendszert kezelő utasítások 1. pwd - munkakönyvtár nyomtatása 2. cd - munkakönyvtár változtatása 3. ls - könyvtár tartalomjegyzéke 4. mkdir - könyvtár létrehozása 5. rmdir - könyvtár letörlése 5. Fájlkezelő utasítások 1. cat - fájlok kiírása 2. cat - fájlok kiírása 3. cp - fájlok másolása 4. mv - fájlok mozgatása, átnevezése 5. rm - fájlok törlése 6. ln - fájl láncolása könyvtárhoz 7. chmod - fájl-jogok beállítása 2. Folyamatok a memóriában 1. Általános leírás 2. Folyamatkezelő utasítások 1. ps - futó folyamatok kiírása 2. kill - folyamat kiirtása 3. Folyamatkezelés a Korn shellben (ksh) _________________________________________________________________ A FÁJLRENDSZER ============== Általános jellemzők ------------------- A Unix fájlrendszere a DOS-szal összehasonlítva sokkal egységesebb: felfogása szerint "minden file". Ez azt jelenti, hogy a felhasználó fájljai, a rendszer könyvtárkatalógusai és a rendszerhez csatlakoztatott hardver eszközök egységesen kezelendőek és egy könyvtárfára vannak "felakasztgatva". A fájl - Unix felfogás szerint - egy struktúrálatlan byte-sorozat. Nincsen semmilyen rá vonatkozó megkötés, nincs fájlvég-jel stb. Minden fájnak van tulajdonosa, nyilván van tartva, hogy a tulajdonos mely csoport tagja (csoportmunkához). A fájlokhoz olvasási, írási, végrehajtási jogok kötődnek, melyek külön beállíthatók a tulajdonos, a csoportja és mindenki más számára (lásd chmod). Ezenkívül a rendszer nyilvántartja a fájl hosszát, az utolsó módosítás időpontját valamint hogy a fájlrenszer hány pontjáról hivatkozunk (könyvtárbejegyzéssel) erre a fájlra (link-szám). Névkonvenciók ------------- Unixban a fájlnevek (manapság, általában) 255 karakter hosszúak lehetnek, tetszőleges számú elválasztó karaktert tartalmazhatnak (.), sőt érvényes név a .-al kezdődő név is. Ezeket a rendszer némileg "rejtett"-ként értelmezi, például alapértelmezésben nem listázza és törli őket (lásd ls parancs). Az ilyen fájlok gyakran különféle programok inicializációs adatait tartalmazzák. A Unix minden esetben (paraméterekben is) megkülönbözteti a kis és nagybetűket, így nem azonos file, File és FILE. A futtatható állományokra nincsen névbeli megkötés, akkor futtathatunk valamit, ha van rá futtatási jogunk. A futtatás a név beírásával történik, ekkor a shell megkísérli bináris fájlként értelmezni és végrehajtani, ha ez nem megy, akkor shell scriptként értelmezi (a shell scriptek a DOS batch fájlaihoz állnak legközelebb.) Általános könyvtárnevek ----------------------- / A főkönyvtár (root), a fájlrendszer kiindulópontja ~/ A felhasználó saját könyvtárja (home directory) ./ Az aktuális munkakönyvtár ../ Az aktuális fölötti könyvtár /dev A különféle eszközök könyvtára /mnt Az ideiglenesen "felakasztott" eszközök becsatolási pontja (lásd mount utasítás) /usr Felhasználói programok, forrásszövegek, könyvtárak /usr/bin végrehajtható programok (főként segédprogramok) /usr/lib utasításkönyvtárak programozóknak /usr/src forrásnyelvű szövegek /usr/local helyileg telepített programok és tartozékaik /usr/local/bin helyileg telepített futtathatók A fájlrendszert kezelő utasítások --------------------------------- pwd - munkakönyvtár nyomtatása ... ALAKJA: pwd Kiírja, hogy melyik könyvtárban tartózkodunk. cd - munkakönyvtár változtatása .. ALAKJA: cd [könyvtár] A megadott könyvtárat teszi aktuálissá. A megadás lehet abszolút (pl: cd /usr/local/bin) vagy relatív (pl: cd ../lib). Ha nincs paraméter, a $HOME könyvtárba visz. ls - könyvtár tartalomjegyzéke .. ALAKJA: ls [opciók] [könyvtár vagy file] Ha opciót nem adunk meg csak könyvtárnevet vagy file(oka)t akkor csak ezek nevei jelennek meg. A -a opció hatására minden fájlt listáz, a -l hatására pedig részletesebb információkat ad, pl: $ ls -l total 35 -rwxr----- 1 root root 40 Mar 12 20:13 betomorit drwxr----x 2 root root 1024 Mar 12 20:13 egyebek/ -rw-r--r-- 1 root root 32204 Mar 12 20:14 mosaic.txt A kiírt információk oszlopsorrendben: - Első karakter: A file típusa: + -: hagyományos fájl (szöveges vagy bináris) + d: katalógusfájl + l: szimbolikus link + b: blokkos eszköz + c: karakteres eszköz - Következő 9 karakter: Hozzáférési jogok kiírása. Az első 3 a tulajdonos, a következő a csoporttagok, az utolsó 3 mindenki más jogait írja le. + r: read, a fájl az adott felhasználó számára olvasható, könyvtár esetében listázható. + w: write, a fájl írható. + x: execute, a fájl végrehajtható. Könyvtár esetében ha nincs meg ez a jogunk, akkor a benne található fájlok nem végrehajthatók. - Következő szám: Link count (láncszám), hány helyről hivatkozunk a fájlra. - A tulajdonos neve - A tulajdonos csoportja - A fájl mérete - Az utolsó módosítás ideje - A fájl neve Ez azt jelenti, hogy példánkban az egyebek könyvtár fájlait a tulajdonos csoportjába tartozók kilistázhatják, mások pedig listázni ugyan nem tudják, de ha a benne lévő futtatható fájl nevét tudják (és arra is van joguk), végrehajthatják azokat. mkdir - könyvtár létrehozása .... ALAKJA: mkdir könyvtárnév Létrehoz egy könyvtárat. rmdir - könyvtár letörlése .... ALAKJA: rmdir könyvtárnév Letöröl egy üres könyvtárat. Fájlkezelő utasítások --------------------- cat - fájlok kiírása ... ALAKJA: cat fájlnév A standard outputra írja a fájl(ok) tartalmát. cp - fájlok másolása .. ALAKJA: cp forrás cél cp forrás1 forrás2... cél Forrást célba másolja, avagy forrás1, forrás2...-t a célkönyvtárba másolja. mv - fájlok mozgatása, átnevezése .. ALAKJA: cp forrás cél Forrást célba mozgatja. rm - fájlok törlése .. ALAKJA: rm fájl1 [fájl2...] A megadott fájlokat véglegesen törli. ln - fájl láncolása könyvtárhoz .. ALAKJA: ln [-s] forrás célkönyvtár A forrásfájlt a célkönyvtárhoz kapcsolja. Ekkor a fájlhoz a célkönyvtárban is tartozni fog egy bejegyzés, és a láncszám (link count) eggyel növekszik. Ha ezután a fájlt töröljük, csak az adott könyvtárból törlődik, míg a láncszám egynél nagyobb. Ha a láncszám 1, fizikailag is törlődik a fájl. A -s opció megadásával csak ún. szimbolikus lánc (symbolic link) jön létre. Ez azt jelenti, hogy egy olyan fájl jön létre, mely az eredeti fájl teljes nevét tartalmazza. Ez a módszer nem növeli a láncszámot. chmod - fájl-jogok beállítása ..... ALAKJA: chmod oktálisszám fájlok Az oktálisszám paraméter egy háromjegyű oktális szám, melynek legmagasabb helyiértékű számjegye a tulajdonos, középső a csoporttag, legalsó mindenki más jogait írja le. Minden jegynél az olvasás értéke 4, az írásé 2, a végrehajtásé 1. pl: chmod 754 valami hatására a tulajdonos írhat-olvashat-végrehajthat, a csoporttag olvashat és végrehajthat, mindenki más pedig csupán olvashat. __________________________________________________________ FOLYAMATOK A MEMÓRIÁBAN ======================= Általános leírás ---------------- A Unixban megkülönböztetjük a program, a processz (folyamat) és a job (feladat) fogalmát. Program a háttértáron várakozó, végrehajtható fájl, processz a program egy memóriában futó példánya, job pedig egy végrehajtáshoz sorbaállított utasítás (pl: nyomtatás). A felhasználó bejelentkezésekor elindul egy shell, egy processz-azonosítóval (PID, process identifier). Ha egy programot elindítunk, az leszármazott folyamatként (child process) indul el. Az ilyen folyamatok is egyenrangúak a szülőkkel, bizonyos paramétereket örökölhetnek tőlük és maguk is újabb folyamatokat indíthatnak. Folyamatkezelő utasítások ------------------------- ps - futó folyamatok kiírása .. ALAKJA: ps [opciók] Paraméter nélkül indítva egy ilyen listát kapunk: $ ps PID TTY STAT TIME COMMAND 49 p 2 S 0:01 -ksh 208 p 2 R 0:00 ps $ A lista elemei sorban: a folyamatazonosító (PID), mely terminálról adtuk ki, milyen állapotban van (S: sleeping, alszik; R: running, fut), mennyi processzoridőt vett eddig igénybe és milyen utasításhoz tartozik. (Egyes rendszereken a parancs máshogyan működhet, pl. az oszlopok sorrendje és a paraméterezés más.) ps a hatására minden futó folyamatról tájékoztatást kapunk. A ps f paraméterezéssel a szülő folyamatok PID-jét is kiírja a program (PPID). kill - folyamat kiirtása .... (CÉLSZERŰ) ALAKJA: kill -9 processzazonosító A processzazonosító-t megtudhatjuk például egy ps utasításból. Folyamatkezelés a Korn shellben (ksh) ------------------------------------- A Korn shellben egy futtatható fájl nevét beírva, előtérben indítjuk el azt. Háttérben indítható egy fájl a neve mögé tett & jellel, például: $ sleep 10& [1] 245 $ Ez azt jelzi számunkra, hogy a shell 245-ös PID-vel saját számozása szerint [1]-es jobként elindította a processzt. Ha 10 másodperc múlva beütünk egy parancssort, kapunk egy plusz üzenetet is: $ [1]+ Done sleep 10 $ Az üzenet a processz befejezéséről tájékoztat bennünket. Ha előtérből háttérbe szeretnénk rakni egy processzt, állítsuk le Ctrl-Z-vel (a program a mamóriában marad!). Ekkor írjuk be: $ bg Ennek hatására a folyamat háttérprocesszként fut, mígnem a fg utasítással előtérbe nem hozzuk. __________________________________________________________ Készítette: Rideg Márton (rmsoft@ludens.elte.hu)