Számítógépek, számítógéprendszerek. Wagner György Általános Informatikai Tanszék

Hasonló dokumentumok
Számítógép architektúrák. A mai témáink. A Unix. A burok

OPERÁCIÓS RENDSZEREK. Az OS kernel felületei. A rendszerhívások. Felületek a kernelhez: a burok és az API

Számítógép architektúrák. Bemutatkozom. A tárgy címe, célja. Számítógépek, számítási modellek

Számítógép Architektúrák. 4. Gyakorlat

chmod umask chown, chgrp

Számítógépek, számítógép rendszerek

Szkriptnyelvek. 1. UNIX shell

BASH SCRIPT SHELL JEGYZETEK

Számítógép architektúrák. Felhasználói felületek, kezelők. Szokásos két osztályuk. Felhasználói felületek

Számítógép architektúrák. A felhasználó látásmódja. Felhasználó a terminál előtt. Mit lát a felhasználó? Szolgáltatások

S z á m í t ó g é p e s a l a p i s m e r e t e k

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Számítógép architektúrák. Felhasználói felületek

Számítógépek architektúrák. Bemutatkozom. A tárgy célja. Architektúrák

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

1. Alapok. #!/bin/bash

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Számítógépek architektúrák. Architektúrák

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

Operációs rendszerek gyak.

Operációs rendszerek I. IIII. gyakorlat

Operációs Rendszerek II. labor. 2. alkalom

Operációs rendszerek 1.

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

BASH script programozás II. Vezérlési szerkezetek

S z á m í t ó g é p e s a l a p i s m e r e t e k

1_Linux_bevezeto_bash

Operációs rendszerek gyakorlat

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

AWK programozás, minták, vezérlési szerkezetek

Operációs rendszerek 1.

Operációs rendszerek. A mai program. Jó dolog a test parancs! Segédprogramok, szűrők

Operációs Rendszerek II. labor alkalom

Számítógépek architektúrák. Architektúrák

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Operációs rendszerek gyakorlat

Számítógépes munkakörnyezet II. Szoftver

További vezérlő valamint számításokat megkönnyítő szerkezetek

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

OE-NIK 2010/11 ősz OE-NIK ősz

Számítógépes alapismeretek

C programozási nyelv

Számítógépes alapismeretek

A héj vezérlő szerkezetei I.

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Bevezetés jogosultságkezelés, csővezeték, átirányítások. BASH script programozás

C programozás. 1 óra Bevezetés

Operációs rendszerek MINB240/PMTRTNB230H

AWK programozás, minták, vezérlési szerkezetek

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs Rendszerek. Windows Parancssor

Programozás alapjai 2 UNIX dióhéjban

Operációs rendszerek MINB240 V2+2+0

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Az operációs rendszer. Az operációs rendszer feladatai, részei, fajtái Az operációs rendszer beállítása

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek MINB240 V kredit KF Nagyváradi Anett 0. előadás Bevezetés

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Programozás alapjai 2 UNIX dióhéjban. Legfontosabb tulajdonságai. Legfontosabb tulajdonságai/2

AWK programozás Bevezetés

A felhasználó látásmódja. Számítógép architektúrák. A felhasználói felület (User Interface) Felhasználó a terminál előtt. A processzek.

Tájékoztató. Használható segédeszköz: -

A perzisztens adatkezelő rendszer tesztelése és demonstrálása a GRID környezetben

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Mi is az a Linux? egyetemista csatlakozott hozzá az Interneten keresztül. (

Bevezetés a UNIX rendszerekbe

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Legfontosabb tulajdonságai. Programozás alapjai 2 UNIX dióhéjban. Legfontosabb tulajdonságai/2. A UNIX rövid története.

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

Operációs rendszerek. Az X Window rendszer

Hálózati rendszerek adminisztrációja JunOS OS alapokon

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Legfontosabb tulajdonságai. UNIX rendszer felhasználói és fejlesztői felülete (1-4. ea.) Unix hagymahéj struktúrája. Legfontosabb tulajdonságai

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia

További vezérlő valamint számításokat megkönnyítő szerkezetek

Linux parancsok összefoglaló.

Operációs rendszerek gyakorlat

OPERÁCIÓS RENDSZEREK II GYAKORLAT

ALKALMAZÁSOK ISMERTETÉSE

6. BASH programozás I.

Operációs rendszerek. UNIX/Linux fájlrendszerek

Operációs rendszerek. 1. gyakorlat. Bevezetés, követelmények UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Számítógép architektúrák. Mit lát a felhasználó? Szolgáltatások

UNIX / Linux rendszeradminisztráció

Linux alapok gyakorlat

Számítógép rendszerek. 4. óra. UNIX fejlődéstörténet

Átírás:

Általános Informatikai Tanszék

Hirdetmények (1) Jelenlevők: műsz. informatikusok A tantárgy célja: Számítógép alapfogalmak Internetes alapfogalmak Unix alapfogalmak Követelményrendszer: 1 ZH, 1 kötelező feladat Értékelés: aláírás vizsga jegy

Hirdetmények (2) Jegyzet: Ami az előadáson elhangzik Interneten: Elérhetőség: Tel: (46)565-111/17-56 Tel: (30)9383-669 E-mail: wagner@iit.uni-miskolc.hu http://www.iit.uni-miskolc.hu Itt az oktatók, Dr. Vadász Dénes, jegyzetek, publikációk, majd a hasonló című jegyzet

Számítógéptörténet, Neumann elv Számítógéptörténet (ld. jegyzet!) Pascal, Babbage, Ada Byron, Hollerith, Zuse, Neumann A Neumann elv (Most röviden, később részletezzük) A gép fő részei, követelmények Tárolt program elvű Program szerint, emberi beavatkozás nélkül is, automatikus működik

Számítógép: hardver architektúra A legáltalánosabb HW architektúra Memória CPU sín Perifériák Hogy működik a számítógép Instrukciók, címzések Perifériakezelés Az architektúra kifejezés kettős értelme specifikáció egységek és kapcsolódásuk

Hogyan működik a számítógép A memória: adatokat [bit, bájt, szó, blokk, rekord (mezőkkel), fájl stb.] és gépi instrukciókat tartalmazó, címezhető cellák. A gépi instrukciók: program (kód), e szerint működik. Az állapot (state), adott pillanatban a memória-cellák pillanatnyi állapota, a perifériák pillanatnyi állapota.

Állapottér Vegyük észre: ez egy sokdimenziós, nagy állapottér. Egy instrukció végrehajtása: i.instr> állapot i állapot i-1 A program futása: állapotátmentek láncolata. A többdimenziós állapottér kulcsjellemzője: a programszámláló regiszter (PC/IP/PSW)

Az állapotátmenetek láncolata Az állapotátmenet-láncolat kulcsjellemzője: a programvezérlés menete (flow of control), a programszámláló regiszter egymás utáni értékei. Az imperatív programozási nyelvekkel: a vezérlés menetét manipuláljuk. Az imperatív programozási nyelveknek: jól megfelelnek a Neumann elvű gépek. A hiba és eseménykezelés jellegzetesen megoldott: a programvezérlés menete ugorjon a kezelőre (handler).

Más elvű gép: adatfolyam gép (Dataflow Machine) Idea: szeparált processzorok minden operációra (operáció lehet: aritmetikai, logikai, függvényhívás stb.) Az operációk (proceszorok) várnak, míg operandusuk értéke előáll, utána adják eredményüket. A processzorok (operációk) függetlenek. A legkorábbi lehetséges pillanatban adják az eredményüket. Az operációk végrehajtásának sorrendje az adatfolyamból adódik.

Példa: adott a és b, kiszámítandó átlaguk és négyzeteik átlaga Egy virtuális Neumann gép (szekvenciális végrehajtás) A flow of control sum := a + b 1 x av := sum/2 2 x IP a b sum av asq bsq sumsq avsq asq := a * a 3 x bsq := b * b 4 x sumsq := asq + bsq 5 x avsq := sumsq/2 6 x Az állapotvektor a 3. absztrakt instrukció végrehajtása után

Gyakran használt fogalmak Virtualitás, virtuális (látszólagos) Valami, ami valóságosan nem létezik, de mégis úgy használhatjuk, mintha létezne Pl. virtuális meghajtó, emulált terminál, virtuális gép stb. Transzparencia, transzparens (átlátszó) Valami, ami ott van, de nem látjuk, nem vesszük észre Pl. az előbbi virtuális diszkmeghajót a hálózaton át egy fájlszerver biztosítja, akkor a hálózat transzparens, nem kell vele törődni.

Példa: adott a és b, kiszámítandó átlaguk és négyzeteik átlaga Neumann gép (szekvenciális végrehajtás) IP 800 804 808 80C 810 814 a b sum x av x asq x bsq x sumsq x avsq x 800 ADD a,b,sum 804 DIV sum,2,av 808 MUL a,a,asq 80C MUL b,b,bsq 810 ADD asq,bsq,sumsq 814 DIV sumsq,2,avsq

Példa: adott a és b, kiszámítandó átlaguk és négyzeteik átlaga Adatfolyam gép a b Hibakezelés: explicit hibaértékekkel 2 * av asq sum / 2 + * bsq + sumsq / avsq A nyilak: neves, vagy névnélküli értékek. A körök: az operációkhoz rendelt processzorok.

Példa: adott a és b, kiszámítandó átlaguk és négyzeteik átlaga Adatfolyam gép Van 6 processzor a 6 operációhoz, nincsenek változók (név, érték, típus, cím), névvel ellátott értékek vannak (a,b,asq,bsq,sum stb). A neves értékek nem definálhatók át! Redefinició esetén nem tudnák a processzorok, melyik értékre várjanak! A neves értékeknek típusa és explicit hibaértéke van! Ui. egy processzor mindenképp kell eredményezzen értéket, legföljebb hibás eredményt! Kaphat hibás inputot is.

Neumann elvű gép A gép fő részei, követelmények: ALU, vezérlő egység, memória, perifériák, 2-es számrendszer, elektronikus. Tárolt program elv: A tárban az adatok és a program is. Következményei: jók és rosszak. Automatikus működés: program szerint, állapotok, állapotátmenetek, a vezérlés menete, PC/IP szerepe.

Számítógép: hardver és szoftver A legáltalánosabb SW architektúra Direkt futtatás, monitor, operációs rendszer Az OS fogalma Kiterjesztett gép Erőforrás menedzser A rétegezettség (layered architecture) architektúra Alkalmazás Operációs rendszer Hardver Egy réteg elrejti az alatta fekvő rétegek részleteit. Elegendő csak az alattad lévő réteg felületét (interface) ismerni Felhasználói felület

Operációs rendszer osztályozás Cél szerint: általános, cél HW nagyság szerint: PC, kis, nagy, szuper Processzorok, processzek, felhasználók száma szerint Időosztás szerint: szekvenciális, time sharing: kooperativ, beavatkozó Memóriamenedzselés szerint: valós, virtuális Fájlrendszer implementáció szerint

A felhasználó látásmódja A HW-ből a terminált látja Képernyő Billentyűzet Mutató eszköz A lényegesebb látnivalók absztrakt dolgok Felhasználói felület Processzek: futó programok Eszközök, fájlok szimbolikus neveiken Felhasználók: neveik, számlaszámaik, e-mail címeik, tulajdonossági és hozzáférési kategóriák Csomópontok: számítógépek, rendszerek

Manapság két féle A felhasználói felület (User Intreface) Parancsértelmező (burok, shell) Grafikus interfész Ismert felhasználói felületek: command.com, Windows, sh, DCL, X-es desktop-ok stb. Interaktív és kötegelt használat Vannak parancsnyelvi (commands language) elemek, válasznyelvi (respond language) elemek, ezeket kell ismerni (látni).

A processzek Processz: párhuzamos szerkezeteket nem tartalmazó program, futás közben Program versus processz A processz kontextus:... azonosítási információk: pid, állapot-információk stb. A felhasználói interfész is processz(ek) Miért kell a processzekkel foglalkozni? Lelőni, szinkronozálni, kommunikálni Mit látunk a processzekből? Azonosítójukat, ikonjukat vagy ablakukat És ezeknek is van felhasználói felületük...

Eszközök Szimbolikus nevekkel a perifériák A szimbolikus neveket a parancsokban használhatjuk Van munka- (default) eszköz (Unixban? Ott nem szükséges hivatkozni rá!) Parancs a munka-eszköz cseréjére A blokkorientált eszközökre képezhetünk fájlrendszert Karakterorientált eszközök is kezelhetők

Fájlok Fájl: valamilyen szempontból összetartozó adatelemek, névvel ellátva, struktúrált eszközön Névkonvenciók és restrikciók lehetnek A nevekre hivatkozhatunk a parancsokban Az adatelem: bájt, szó, mező, rekord Tartalmuk szerint: szöveg, dokumentum, bináris adat (kép, hang, tárgyprogram, futtatható program stb.)

A jegyzék (directory) Eddigi elképzelésünk: létezik egy fájl-halmaz (file pool), benne fájlok, neveikkel. Rendezni kellene! Pl. gyűjteni, együttkezelni fájlok csoportjait. Jegyzék: egy fájl, ami bejegyzéseket tartalmaz más fájlokról. Van neve, konvenciókkal. Könyvtár? Akkor mi a library? Korszerű OS-ekben minden fájl - egy kivételével - be van jegyezve egy jegyzékbe Ez szülő - gyermek relációt ad

Szülő jegyzék dir szülő A szülő reláció: egy-az-egy gyermek subdir gyermek subdir dir szülő A gyermek relációk: egy-a-több gyermek file Szülő jegyzék (parent directory): egy jegyzék szülője. Van szimbolikus neve: ez OS burok függő. A relatív ösvény kijelölését segíti ez a név.

Gyökér jegyzék, fájl-rendszer A szülő - gyermek reláció kiterjesztése hierarchikus faszerkezetet ad Gyökér jegyzék (root directory): az eszköz kitüntetett jegyzéke. Nincs bejegyezve jegyzékbe. Kitüntetett helyen van a tartalma. Kiindulópontja a hierarchikus faszerkezetnek. Szimbolikus neve: OS függő Fájl-rendszer: blokk-orientált eszközre képzett hierarchikus struktúra, melyben a fájlok azonosíthatók, attribútumaik, blokkjaik elérhetők, az eszköz blokkfoglaltsága menedzselt.

Jegyzékek, ösvény Ösvény (path): szülő-gyermek relációban lévő jegyzéknevek listája (listavég lehet fájlnév is), mely valamelyik jegyzékből kiindulva jegyzéket, fájlt azonosít A listaelválasztó: OS burok függő Indulhat gyökér jegyzékből (abszolút), munkajegyzékből (relatív). Munkajegyzék (default, working dir.): az OS által feljegyzett, ezzel kitüntetett. Relatív ösvény kiindulópontja: gyors keresés benne,nem szükséges explicite hivatkozni rá. Van szimbolikus neve, ez OS burok függő.

Fájlrendszer Blokkorientált eszközön hierarchikus struktúra root Munkajegyzék subd1 f1 subd2 subd3 f2 f1 f2

Grafikus felületeken mit látunk? Eszközöket: ikonok... Fájlokat: ikonok, tartalmuktól függően. Akciók velük: kijelölés, kiválasztás, vonszolás, attribútum lekérdezés stb. (Kettős kattintás: lehet, hogy az asszociált alkalmazás indul ) Jegyzékek: mappa (folder) ikonok. Ösvények: rajzos faszerkezeten az ágak. Processzek: ablakok, ikonok... Gazdagépek: ikon v. legördülő listaelem. Néha visszalépünk a parancsnyelvi felületre... Felhasználók: ikonok v. nevek... Láthatunk még: menüket, tálcákat stb....

Felhasználók Vannak más felhasználók is (sőt: csoportok) Kommunikációhoz ismerjük azonosítóikat nevüket, e-mail címüket, honlap címüket stb. Vannak tulajdonossági kategóriák is xy tulajdonosa ennek és ennek... ez a csoport csoport-tulajdonosa ennek... Semmilyen tulajdonossági viszony sincs... Hozzáférési kategóriák is (rwdx)

Hálózatok: számítógéprendszerek Hálózatosztályok: GAN, WAN, MAN, LAN, VLAN A hálózatosodás mozgatórugói Erőforrás megosztás Számítógépes kommunikáció. Ma már szinte nagyobb hajtóerő. Csomópontok (node) kapcsolók, gazdagépek (host). Adattovábbító media

Csomópontok: gazdagépek Gazdagépek: azonosított rendszerek. Szolgáltatásokat biztosítanak. Legalapvetőbb: felhasználói interfésszel dolgozom rajtuk: (közeli/távoli géphasználat!). A használatba vételhez két dolog kell Kapcsolat (connection) kell létesítés ülés (session) létesítés. Néha ezek degeneráltak, eliminálódnak.

A kapcsolat létesítése Legfontosabb információ ehhez a host azonosítója (címe, neve) és a szolgáltatás azonosítója (portcím, szolgáltatás protokoll). A szolgáltatás azonosító sokszor bedrótozott a kapcsolatkezdeményező processzbe, nem kell megadni. Célja: létesüljön vonal (kapcsolat), hogy ezen az ülés létrehozásával lehetővé tegyük a szolgáltatás igénybevételét. (A gazdagépen induljon vonalkezelő processz, ami a vonalat biztosítja.

Géphasználati kapcsolatlétesítéshez Kell terminál: vagy valódi, vagy emulált. (Létező ülés alól a kliens oldalon pl. indíthatunk terminál-emulációt, abból kezdeményezhetünk kapcsolatot). Degenerált kapcsolatlétesítés: leülünk egy gép elé

Távoli géphasználat Valódi v. emulált terminálról kapcsolatlétesítés (telnet, ssh) és viszonylétesítés (login) után használjuk a UI-t. Lehet grafikus is. User User Terminal OS shell (UI) User File System

Távoli géphasználati kapcsolatlétesítés parancsai ülésből MS-DOS ülésből TCP/IP protokollal > tn [-t vt100] host_id [port] > rloginvt host_id [username] > ssh host_id Unix burokból, DCL-ből (TCP/IP) > telnet host_id > ssh host_id

Kapcsolat bontása Kapcsolaton létesített ülés bontása bontja a kapcsolatot is. Ha létesült kapcsolat, de nem létesült ülés: Használjuk a kapcsolattartó menekülési (escape) szekvenciáját! Hosszú idejű forgalomnélküli kapcsolatot bontják a rendszerek, de nem örülnek a rendszergazdák. Degenerált kapcsolatnál egyszerűbb a helyzet: kikapcsoljuk a gépet, felállunk.

Ülés (session) létesítése Célja: azonosított, ellenőrzött módon használjuk a rendszert (géphasználatra burkot, GUI-t, speciális célra valamilyen SW rendszer processzeit). Legfontosabb információ: számlaszám (bejelentkezési név) a jelszavával (uic, password). Vannak nyilvános, jelszó nélküli számlaszámok (anonymus, user, guest) Egyfelhasználós (PC) rendszereknél ez is lehet degenerált.

Ülés-létesítés, -bontás parancsai Létesített kapcsolaton megjelenik: A rendszert leíró általános üzenet (informál), a login prompt (erre válaszolunk), a passwd prompt (erre is válaszolunk). Ellenőrzés a jogosultságra, ha sikertelen, néhányszor javíthatunk. Ha sikeres: megjelenik a motd, indul a felhasználói felület-processz. Ülésünkben a burok/gui fut. Dolgozhatunk. Ülés bontás : > logout EOF

Ne feledjük... Vannak a távoli géphasználat célú kapcsolat-ülés létesítésen kívül más kapcsolatok is! Pl. ftp: kapcsolat, ülés Web böngésző: kapcsolat, ülés (Általánosítunk!) kliensek, szerverek

A kliensek Erős kliens UI: CDE, Windows, WEB böngésző Office (dokumentumszerkesztés, táblázatkezelés, előadásszervezés, munkszervezés, stb.) A Lotus Notes Specialitások (CAD, szimuláció, stb.) Az OS-ek NT, W2000, XP,.NET Linux AIX, Irix, Solaris, HP Unix stb. Mit igényel a szervertől? Fájl és nyomtatószolgáltatást, user menedzsmentet, munkaszervezés szolgáltatást, installációs támogatást AB szolgáltatást

Csak OS (és UI) fut rajta Lehet diskless Mit igényel a szervertől? A gyenge kliens Mint az erős, továbbá Minden alkalmazás az alkalmazás-szerveren fut Szerveren elegendő CPU teljesítmény szerveren elegendő memória (pl. NT: 20 Mbyte/kliens) megosztó szoftver (pl. NT: Terminal Server) Volt már ilyen? Előnye Igen, az X11 X-szervere (Xterminál) Csak a szerveren kell karbantartani, fejleszteni Nem avulnak el a kliensek

A szerverek Fájl és nyomtató szerver Sun NFS NT fájlmegosztás, map-elés Samba Központi felhasználói menedzselés NIS (a Unix világban természetes) NT, W2000 domain-felhasználói menedzselés Központi alkalmazások Munkaszervezés Levelező rendszer AB rendszerek

A szerverek Speciális alkalmazások A szerverről indíthatók, de erős kliensen futnak A szerveren futnak, a gyenge kliens csak UI-t ad Milyen OS-ek jönnek szóba? IBM AIX SGI Irix Sun Solaris, Sun OS HP HP-Uix NT, W2000 A szerverek méretezése

Összefoglalás Neumann elvű gép - adatfolyam gép Mivel foglalkozik a felhasználó UI/GUI Eszközök és fájlok, fájlrendszer Processzek (futó programok) Felhasználók, tulajdonlások és hozzáférések Csomópontok és szolgáltatások Géphasználathoz kapcsolat és ülés létesítés/bontás Kliensek és szerverek

Unix Pár jellemzője: Nagyon elterjedt Multiprocessing Multiuser Időosztás Általános cél Néhány ismertebb kiindulási anyag Orlando Unix iskola: http://www.cab.u-szeged.hu/local/doc/: UNIX/orlando/bev.html Egy nagyon rövid leírás: gopher://helka.iif.hu:7070/0/porta/szint/muszaki/sz amtech/os/unixalap.hun A Unix rövid története: www.cs.elte.hu/~gombasg/unix_tortenelem.html

Unix (2) Neve programja szokásos promptja előnye Bourne shell sh $ Mindenhol, shell programozásra C shell csh % Mindenhol, interaktív használatra TC shell tcsh % Interaktív használatra Korn shell ksh $ SVR4-ben ajánlott Super user shell-je sh #

Kialakulása Kutatási program az 1960-as években. Cél: Az MIT, a Bell laboratórium és a GE Neve: MULTICS (MULTiplexed Information and Computing Service) fejlesztés PL/I nyelven folyt egyetlen működőképes PL/I fordító sem létezett!!!

Kialakulása (2) A program feladására kényszerültek. Az egyik fejlesztő, Ken Thompson megírta a MULTICS egyszerűsített változatát egy használaton kívül lévő PDP-7 számítógépen Volt: állomány és file kezelés process kezelő alrendszer segédprogramok Elnevezése: (Brian Kernighan): eunuch multics, röviden UNICS (Uniplexed Information and Computing Service).

előnye: működött. Kialakulása (3) Dennis Ritchie emiatt egész osztályával együtt csatlakozott a UNIX fejlesztéséhez (közben megváltoztatták a nevét). Cél: más gépre is elkészíteni Az ős-unix assembly nyelven készült, így újra kellett írni az egészet.

Kialakulása (4) a C nyelv A B nyelv szerepe. Elődje a BCPL, annak pedig a CPL volt. Egyikre sem készült el fordító! Dennis Ritchie, újratervezte a B nyelvet (C nyelv), bevezette a struktúrákat, és egy fordítót is írt PDP-11 gépre.

Kialakulása (5) A kernel átírása 1973: a UNIX rendszer magját (Kernel) átírták C- re! hordozhatóvá vált, 1974: az első nyilvános publikáció Az AT&T egyetemek részére ingyenesen hozzáférhetővé tette

Kialakulása (6) 1979: az első, nem PDP-s gépre történő kifejlesztés a forráskód birtokában megindult a véget nem érő buherálás az egyetemeken. Az egyetemek közül kiemelkedik a: University of California at Berkeley 1979: kb. 500 különböző UNIX, mind az USA-ban. Nagyon népszerű a telefontársaságoknál.

Kialakulása (7) A Berkeley egyetem számos ponton javítottak az AT&T-től kapott Unixon: gyorsabb fájlrendszert írtak, elkészítették a VAX-on futó változatot, beépítették a hálózatkezelést, számos segédprogramot Jelenleg: 4.4 BSD UNIX

Kialakulása (8) A bajok kezdődnek nyolcvanas évek végére két különböző, Unix van: AT&T: UNIX BSD UNIX 1977-1982: az AT&T összefogja a saját verzióit és a version 7 után System III néven jelenik meg. 1983: kb. 100.000 működő UNIX rendszer. 1983: megjelenik a System III továbbfejlesztése a System V. (System IV???), majd annak release-ei. Pl: System V Release 4, röviden: SVR4

Kialakulása (9) bajok még vannak a System V-re írt C programot a BSD-s rendszerek fordítói nem tudták lefordítani, és viszont. A C nyelv fordításvezérlő direktíváival (#ifdef, #ifndef, #endif) korrigálható, de ez egyúttal azt jelenti, hogy a C programot minden géphez át kell egy kicsit alakítani, "portolni" kell

Kialakulása (10) XENIX A Microsoft PC-re fejlesztett UNIX változata. Akkor még DOS 3.1 volt: single task-os single user-es használata user név és jelszó nélkül.

Kialakulása (11) egységesítések 1. AT&T: SVID (System V Interface Definition) Szabványos rendszer hívások Szabványos szubrutinok Jó: végre van szabványtervezet Hátrány: egy cég tartsa kezében az egészet? NEM! Következmény: a BSD-sek figyelmen kívül hagyták 2. IEEE: POSIX (Portable Operation System Interface (x)) Támogatói: ANSI, ISO Összetétele: 70%-ban SVID, 30% saját elképzelések Minden nagy UNIX gyártó elismeri a POSIX jelentőségét, és támogatja azt. Ettől függetlenül továbbra is építenek be inkompatibilis részeket saját UNIX-ukba

Kialakulása (12) egységesítések (2) A riválisok két szervezetbe tömörülnek: OSF (Open System Foundation) vezetője a DEC Tagjai: DEC, IBM, HP, BULL, Siemens-Nixdorf, UI (Unix International) Alapítója az AT&T Tagjai: NCR, Unisys, Data General, Patt helyzet. Új szervezetet hoznak létre: X/OPEN

Kialakulása (13) egységesítések (3) Az X/OPEN által készítet operációs rendszer szabvány neve: Core OS API, más néven Common API. A szabványt a benne leírt specifikációk alapján hívják Spec 1170-nek is, sőt egy további neve is van: UNIX 95 Ha egy OS átmegy az X/OPEN minősítő tesztjein, megkapja a UNIX 95 minősítést. Távlati cél: bináris kompatibilitás

UNIX-ok IBM, DEC, Berkelay, Silicon, Hewlett-Packard, SUN, Microsoft, Linux-ok,

Linux (1) Finn egyetemista: Linus Thorvalds Kurzus: OS Tanára: Tanenbaum Tanenbaum: microkernel Linus: monolitikus kernel Ellentétek

Linux (2) Operating systems news:... Jelenleg: 2.4.19 a legfrissebb kernel (2002. szeptember 28!) Terjesztők (Slackware, Suse, Open Linux, Red Hat, Debian, Mandrake, )

Linux (3) Suse: 8.1 (http://www.suse.com/index_us.html) Mandrake: 9.0 (http://www.linux-mandrake.com/en/) Debian: 3.0r0 (http://www.debian.org) Slackware: 8.1 (http://www.slackware.com) Red Hat: 8.0 (http://www.redhat.com)

Unix filozófia Mások munkájára építs! Ezt segítik a következő koncepciók: processz általában az stdin-ről olvas, stdout-ra (stderr-re) ír; a parancsok is! A standard adatfolyamok átirányíthatók. Csővezeték képezhető. Szűrők használhatók. Sok daemon processz szolgáltat. $ cat txt $ cat >txt $ grep vmi <txt wc

Honnan tanulhatunk? Könyvekből, az Orlando iskolából, insight-ból az Irix-ben, info-ból az AIX-ben stb. Az on-line kézikönyvből: > man [-opc] [section] lap Tanácsok: Tudni kell angolul olvasni! Fontos parancsok nevét pontosan tudni! Parancs-kártya a fontos parancsok nevével!

Parancsok: editorok ed sororientált vi (vim) képernyőorientált e (emacs) képernyőorientált jot, zip egyszerű, egész jó, de csak SGI-n pico egyszerű, SGI-n, gold-on (vt100 kell)

Parancsok: kiírók cat pr head tail more od concatenál, stdout-ra printel, stdout-ra file első sorait file utolsó sorait lapokra tördelő szűrő oktális dump (ömlesztés)

Parancsok: jegyzékekkel kapcsolatban ls jegyzék tartalom lista (dir helyett) mkdir jegyzék készítés rmdir jegyzék törlés cd munkajegyzék váltás pwd munkajegyzék lekérdezés chmod fájl védelmi maszk váltás chown fájl tulajdonos váltás file fájl típus lekérdezés

Parancsok: másolások, mozgatások cp copy, másolás mv move, mozgatás (rename helyett is!) ln (link) "linkel" rm (unlink) töröl find keres fájlt egy fán és csinál is valamit (bonyolult, de nagyon hasznos!)

Parancsok: állapotlekérdezések ps processzek listája file, ls, pwd ld. fönn date dátum, idő lekérdezés who, w, rwho, rusers ki van bejelentkezve? rup mely rendszerek élnek? top, gr_top erőforráshasználat csúcsok osview, gr_osview erőforráshasználat last utolsó bejelentkezések

Parancsok: állapotlekérdezések 2 finger ki kicsoda? passwd, yppasswd jelszóállítás ypchpass név, induló burok stb. beállítás ypcat NIS (yellow pages) adatbázis lekérdezés xhost X11 munka engedélyezése set környezet (environment) lekérdezés du, df diszk használat

Parancsok: processz indítás,vezérlés sh, csh, ksh, tcsh shell idítás exec processz indítás kill processz "megölése", szignálküldés sleep processz altatása wait processz várakoztatás at processz indítása egy adott időpontban nohup kilépéskor ne ölje meg test kifejezés tesztelése

Parancsok: processz indítás,vezérlés 2 expr kifejezés kiértékeltetése if, case, for, do while vezérlő szerkezetek break, continue vezérlő szerkezetek echo argumentumai echo-ja (meglepően hasznos valami)

Parancsok: kommunikáció telnet, rlogin, rsh kapcsolatlétesítés rwho, rusers, finger lásd fönt write üzenet konzolokra talk, xtalk, irc interaktív "beszélgetés" mail, Mail, pine, zmail e-mail ftp fájl átvitel lynx, netscape WWW böngésző (kliens)

Parancsok: hasznos szűrők grep mintakereső awk, nawk mintakereső feldolgozó wc sor, szó, karakterszámláló sed áradatszerkesztő cut mezőkivágó tail, head lásd fönn.

Az sh burok A shell kettős értelme: parancsértelmező processz, prompt-otad, parancsot elfogad, értelmez, átalakít (behelyettesítések!), végrehajt. Programnyelv, vannak adatszerkezetei, vezérlési szerkezetei, kommentezhető, odaadható a parancsértelmezőnek, hogy hajtsa végre.

Több burok van! Melyiket? Az sh előnyei: mindenütt, shell programokat konvenció miatt ebben! Hátránya: interaktív használatban kényelmetlenebb. Szerencsére a legtöbb segédprogram (külső parancs) bármelyik burokból ugyanúgy hívható! Mi mindenesetre az sh burkot kérjük!

A parancs fogalma Fehér karakterekkel határolt szavak sora első szó a parancs neve, többi szó az argumentumok. Az sh beolvassa, értelmezi, átalakítja, végrehajtja saját maga (belső p.), gyermek processzben (külső p.) Mindkét esetben van visszatérési értéke!

A visszatérési érték Lehet normális (0), lehet nem normális (nem 0), ennek oka többféle: valami hiba van, nincs hiba, de szemantikailag van gond. (Pl. grep szűrő nem talál mintaegyezést, vagy test parancs tesztelése nem igaz.) A visszatérési értéket a programvezérlésben használhatjuk majd.

A szabványos adatfolyamok Az sh processznek (rendszerint) van legalább 3 nyitott adatfolyama. Ezek a szokásos leképzésükkel: Leíró Név Leképzés 0 stdin billentyűzet 1 stdout képernyő 2 stderr képernyő Gyermek processzben a leképzések átirányíthatók fájlba(-ból), csőbe(-ből).

Egy példa parancsra > find. -name a.c -print ahol a szavak számozása 0 1 2 3 4 Azaz a fenti parancs 5 szóból áll. Vegyük észre, hogy a burok promptja nem része a parancsnak! Inputot nem kíván, outputja (esetleges hibaüzenetei is) a képernyőre megy. > find. -name a.c -print >myfile.txt

A csővezeték fogalma A csővezeték (pipe) parancsok sora operátorral összekötve: parancsbal parancsjobb Szematikája: végrehajtódik a parancsbal, szabványos kimenete egy csőbe képződik, majd végrehajtódik a parancsjobb, aminek szabványos bemenete erre a csőre képződik. A cső visszatérési értéke: a parancsjobb visszatérési értéke. A parancs degenerált cső. Példa: > ypcat passwd grep kovacs

A parancslista Csővezetékek sora listaoperátorral összekötve: csőbal op csőjobb Listaoperátorok: && # magasabb precedencia, de alacsonyabb mint a & ; \n # alacsonyabb precedencia A szemantika: ; \n soros végrehajtása a csöveknek & aszinkron végrehajtás (csőbal háttérben) && folytatja a listát, ha csőbal normális visszatérésű folytatja a listát, ha a csőbal nem normál visszatérésű

Parancslisták A lista visszatérési értéke az utolsó cső visszatérési értéke. Háttérben futó cső visszatérési értéke különlegesen kezelhető. A cső degenerált lista (ahol ezentúl listát írunk, írhatunk csövet, sőt parancsot is!) A && és operátoros listáknál először láthatjuk a visszatérési érték értelmét! Valóban a vezérlés menetét befolyásoljuk!

Példák > cd ide && rm junk # csak akkor töröl, ha... > ls ide cp valami ide # ha nincs ide, készíti Nézzük, magyarázzuk ezt! > (mv a tmp && mv b a) && mv tmp b

Példák Háttérben futtatunk > myprog 1 2 & 125 > Mi a különbség? > echo valami echo valami valami echo valami > echo valami; echo valami valami valami

Parancs (cső, lista) zárójelezés A zárójelezés (csoportosítás) oka kettős: operátorok precedenciáját akarjuk átértékelni, processz szeparálást akarunk elérni. Szintaxis ( lista ) { lista } Szemantika ( ) zárójelezéssel a lista mindenképp szeparált processzben fut. Precedencia átértékelés is lehet. { } zárójelezéssel nem fut feltétlenül szeparált processzben.

Példák zárójelezésre Mást ad az alábbi két lista: > date ; who wc > ( date ; who ) wc # itt precedenciát értékelünk át Két példa következik. Az első: > pwd vhol > cd ide ; rm junk ; pwd vhol/ide A második: > pwd vhol > (cd ide ; rm junk); pwd vhol A processz szeparálás hatásai: más lehet a környezet (csak öröklődő változókat lát a gyermek, ott más lehet a munkajegyzék stb.). Számítsunk erre!

Parancsvégrehajtás Általában az sh készít új processzt a parancs számára, ebbe betölti a parancsot, átadja az argumentumokat neki (szkriptek, exe-ek; PATH szerinti kereséssel). Ha nincs ( ) zárójelezés, sem átirányítás, nem készül új processz a belső parancsoknak (melyek ezek?), vezérlő parancsoknak, sh makróknak (definiált függv.ek). Ha belső parancs bármilyen okból szeparált processzben fut, abba az sh töltődik!

Belső parancs szeparált processzben > (ls a b c) # sok értelme nincs, de kikényszeríthetjük > ls a b c wc # ezek is gyermek processzekben. Magyarázat, miért gyermek processzekben

Összefoglalás Több burok van... Fontos Unix burok parancsok nevei Az on-line man használata A parancs, cső, parancslista fogalmak A burok beolvas, értelmez, átalakít majd végrehajt A visszatérési érték A standard adatfolyamok (csőnél fontos) A parancs processzek szeparálása

Az adatfolyamok átirányítása Mielőtt a lista/parancs végrehajtódik, az sh nézi, van-e átirányító operátor > >> < a szavakban (szavak előtt). (A << különleges!) Ha ilyeneket talál, szeparált processz(eke)t készít, azokban az adatfolyamokat fájlokba(ból) képzi le, majd abban futtaja a listát/parancsot. (Csőnél is szep. processz!) A szeparált processz(ek)nek átadja a maradék argumentumokat.

Az átirányító operátorok < file # file legyen az stdin > file # file legyen az stdout, rewrite >> file # file legyen az stdout, append <<[-]eddig # here document, beágyazott input Példa: > mypr < innen > ide elso masodik 0 1 2

Fájlnév kifejtés (behelyettsítés) Argumentumokban használt metakaraktereket (közöttük a dzsókereket: *? [ ]) a burok a lista/parancs végrehajtása előtt különlegesen kezeli. Ha a szavakban dzsókereket talál, azt a szót mintának (pattern) veszi. A minta behelyettesítődik alfabetikus sorrendű fájlnevek litájává, olyan nevekre, melyek a fájlnév-térben illeszkednek a mintára. Csak ezután hajtódik végre a parancs/lista.

Az illeszkedés A? egyetlen, bármely karakterre illeszkedik. A * tetszőleges számú, tetszőleges karakterre illeszkedik. A [...] illeszkedik egyetlen, valamelyik bezárt karakterre. A [!.] illeszkedik egyetlen, bármely, kivéve a! utáni karakterre. stb, nézz utána!

Példák Tegyük fel, az aktuális jegyzékben van 4 fájl: a abc abc.d xyz $ ls * # ls a abc abc.d xyz $ ls a* # ls a abc abc.d $ ls [a]?? # ls abc $ ls [!a]?? # ls xyz Vegyük észre, előbb megtörténik a behelyettesítés, csak azután hívódik az ls parancs! Vö: $ rm * és DOS> DEL * Vigyázz: > echo *

A metakarakterek semlegesítése Ezeket az sh kifejti, ezek miatt a parancsot átalakítja. Ha mégis szükségünk van ezekre a parancshoz, (pl. szűrőnek kellenek) quotá-zuk őket! Egyetlen karakter semlegesítése: \kar Több karakter semlegesítése: karaktersor # minden bezárt quótá-zott. karaktersor # a paraméter és parancsbehelyettesítésen kívül (lásd később) minden quótá-zott.

Példák $ a=valami $ echo $a valami $ echo $a $a $ echo *$a *valami $

Burokprogramozás A burokprogram (shell script) szövegszerkesztővel készült ASCII fájl, parancsokat (csöveket, listákat) tartalmaz soraiban, esetleg beágyazott input sorokat, odaadható a burok-értelmezőnek, hogy dolgozza fel, olvasható (és futtatható) legyen a fájl! Az editorok általában olvasható fájlokat készítenek. De nem futtathatókat. A futtathatóvá tétel: > chmod +x bprogram

Hogy futtassuk? Ha csak olvasható, nem lehet argumentumokat adni: > sh < bprogram > sh bprogram vagy $. bprogram Ha futtatható is, akkor > bprogram arg1 arg2...

A burok program,... Ha program, akkor van (egyszerű) végrehajtási szerkezete, vannak (egyszerű) adatszerkezetei, kommentározható. A kommentározás # után a sor maradéka: kommentár. Figyelni az első sorra! Lásd később! Tessék kommentározni!

A shell adatszerkezetei Típusuk: szöveglánc (füzér). Csak numerikus karakterekből álló szöveglánc néha numerikus adatként viselkedhet: numerikus operációk hajthatók rajtuk végbe. Lehetnek: változók: ekkor van nevük, van pillanatnyi értékük. Konstansok: szövegkörnyezetből adódnak (lexikális szöveg-konstansok).

A változók A burok által definiált változók: nevüket nem mi választjuk meg. Lehetnek: pozicionális változók (argumentumok), Egyéb, a shell által definiált változók. A felhasználók által definiált változók (nevüket kiválaszthatjuk): a rendszergazda által definiáltak: konvencionális nevek! Az egyes felhasználók által definiáltak: legyenek itt is konvencióink!

A pozicionális változók Nevük: 0 1 2 3 4 5 6 7 8 9 Pillanatnyi értékük: az aktuális argumentumok (a szavak) Emlékezz: a 0. szó a parancs neve: a 0 nevű változó pill. értéke, az 1. szó az 1. argumentum: az 1 változóban van. Annyi változó definiált, ahány szó van! Ha 9-nél több argumentum van: a shift paranccsal eltolhatók, így kezelhetők!

Néhány, a shell által definiált változó Neve Értéke Kifejtése # az argumentumok száma $#? utolsó parancs exit státusza $? $ a processz pid-je $$! az utolsó background processz exit státusza - burok opciók $- $! * minden argumentum szólistája $*

Néhány, a rendszergazda által szokásosan definiált, exportált változó Neve Értéke Kifejtése HOME a bejelentkezési jegyzék $HOME MAIL a postaládánk $MAIL PATH ösvénylista a futtatáskereséshez $PATH TERM a vonali terminál típusa $TERM USER felhasználó neve $USER DISPLAY az X-szerver azonosító $DISPLAY

Változódefiniálás Szintaxis Példa: $ valtozo=fuzerkifejezes $ tmpfile=/tmp/valami Vigyázz! A következő nem jó! Miért? $ valtozo = fuzerkonstans (Mert ez már 3 szó! Tilos a fehér karakter az = előtt és után!)

Hivatkozás a váltózókra, kifejtésük A kifejtő operátor a $ $valtozo $tmpfile /tmp/valami kifejtődik. Pl.: Néha szükséges lehet az egyértelműsítéshez: Pl: ${valtozo} $ val=valaki; valaki=senki $ echo $valaki senki $ echo ${val}aki valakiaki

Példák $ val=valaki; echo $val valaki $ val= echo valami $ $val valami Írjuk ki az aktuális jegyzék tartalmát ls nélkül $ val=*; echo $val a ab abc f1 f2...

A teljes változókifejtés Itt: valt változónév, szo szövegkifejezés, parancs. Ha a : (colon) hiányzik, a 0 string-hosszúság nem ellenőrződik! ${valt:-szo} ${valt:=szo} ${valt:?szo} ${valt:+szo} Ha a valt definiált és nem 0 string, akkor kifejtődik. Különben kifejtődik a szo. Ha a valt nem definiált vagy 0 string, akkor felveszi a szo-t, különben nem veszi fel. Ezután a valt kifejtődik. Ha a valt definiált és nem 0 string, akkor kifejtődik. Különben kiíródik a szo (hiánya esetén default üzenet és exitál a shell). Ha a valt definiált és nem 0 string, akkor kifejtődik a szo. Különben semmi sem fejtődik ki.

Parancsbehelyettesítés A parancsok szokásosan az stdout-ra írnak. A ` ` (grave account) közé zárt parancs fut és kimenete kifejtődik! Példa: $ valt=`wc -l <myfile.txt` # a valt felveszi # a sorok számát $ test `wc -l <myfile.txt` -gt 3 && cat myfile.txt # ha több mint 3 sorból áll, írja ki

A változók érvényességéhez: a processzek környezete Minden processznek - így a buroknak is - van környezete (environment) A környezet: vált=szöveglánc sorokból álló tábla Gyermek processz a környezetet örökli a szülőtől Mikor az sh processz indul, végigolvassa a környezetét és definiálja a benne található változókat További definiciók is lehetnek az sh életében, átdefiniálások is lehetnek. Ezek nem kerülnek a környezetbe (nem örökölhetők)

Exportálás: többszintes öröklődés Exportálással változót a környezetbe teszünk (ezzel lefelé öröklődővé tesszük) > export valtozónév-lista Pl. a rendszergazda valahol leírta : $ export MAIL HOME PATH... Exportálással csak leszármazottak örökölhetnek (fölfelé nem) Nem exportált változó nem látható a leszármazott processzekben, de visszatérve abba a burokba, amiben definiáltuk újra láthatóvá válik

Egyszintes környezetbe tétel Egyszintes öröklődés $ valt=kifejezés parancs # ugyanabban a sorban ha a parancs külső: látni fogja ha belső: nem látja $ valt=kifejezés; parancs # ugyanabban a sorban ha a parancs külső: nem látja ha belső: látja

Egy másik tárgyalásmód: változók érvényessége A változó definiálása: bekerül az aktuális burok környezetébe (environment). (A környezet: szövegsorok táblája.) Gyermek processz a környezet egy részét örökli. Az örökölt környezetbe definiált változók a gyermekben is láthatók! Egy szintes öröklődés: $ valt=kifejezes parancs

Egy másik tárgyalásmód: exportálás: több szintes öröklődés Az exportálás az öröklődő részhalmazba tesz. $ export valtozonev-lista Pl. a rendszergazda valahol leírta : $ export MAIL HOME PATH... Exportálással csak leszármazottak örökölhetnek (fölfelé nem!) Nem exportált változó nem látható a leszármazott processzekben, de visszatérve abba a burokba, amiben definiáltunk, ismét látható!

CSH, TCSH különlegességek Itt vannak közönséges változók % set valt=kifejezes % @ nvalt=numerikus-kifejezes % unset valt # def. megszüntetés Van közönséges tömbváltozó is! % set valt=(szolista) % @ valt[index]=kifejezes % ${valt[index]} $valt[i-k] # hivatkozások

CSH, TCSH különlegességek Vannak környezeti változók. Ezeket automatikusan exportálja a c-shell. % setenv VALT kifejezes A közönséges változókat itt is exportálhatjuk. Egyes fontos változók itt is, ott is! Nézz utána, érdekes!

A változó érvényessége, láthatósága A pozícionális változók csak az adott shell-ben láthatók. A shell által definiáltak csak az adott shell-ben láthatók. A definiált változók az adott shell-ben láthatók. Az exportált változók lefelé, a gyermekekben is láthatók.

Vezérlési szerkezetek Szekvenciális programszerkezetek Elágazások Hurkok A szekvenciális szerkezetek A parancslisták

Az if elágazás if plista1 then plista2 [elif plista3 then plista4] [else plista5] fi A plista1 és plista3 predikátumok: igazak, ha normális visszatérési értékül van. Figyelj a kulcsszavakra: if, then, elif, else, fi Érdekes a fi lezáró. A [ ] nem része szintaxisnak: jelzi, elmaradhat a bezárt rész.

A case elágazás case szo in minta1 ) lista1 ;; minta2 ) lista2 ;;... esac Pl. ugyanaz -x -y -[xy] Kifejtődik a szo és összevetődik a mintákkal (az írt sorrendben). Ha egyezés van, végrehajtódik a mintához tartozó lista és vége! A minták (hasonlítanak a fájlnév behelyettesítési mintákhoz): * ) akármi, default. p1 p2 [p1p2] alternatíva alternatíva Érdekes kulcsszavak: case, in, esac, figyeld a ) -t, a ;; -t

A for ciklus for valt [in szolista] do plista done Pl.: for i in egy ket harom do echo $i done A valt rendre felveszi a szolista elemeit és minden értékével végrehajtódik a plista (a ciklus teste). Vedd észre a kulcsszavakat: for, in, do done Elmaradó in szolista ugyanaz, mint in $* (az aktuális argumentumlista a szólista)

Egy kérdés Mi a különbség? for valt in $*... for valt... for valt in *...

A while ciklus while plista1 do plista2 done until plista1 do plista2 done Végrehajtódik plista1, és ha normális visszatérésű, a plista 2, majd újra a plista1, s így tovább. Némely shell-ben until ciklus is van. Új kulcsszavak! Most már érthetjük a parancs visszatérési érték értelmét!

Foglaljunk össze Átvettük az átirányítást, a fájlnév behelyettesítést, a burokprogram adatszerkezeteit, a változóbehelyettesítést és vezérlési szerkezeteket: a szekvenciális szerkezetet (listák), elágazásokat (if és case), a for ciklust, a while (until) ciklust.

Jó dolog a test parancs! Két szintaxisa is van: test kifejezes [ kifejezes ] Szemantika: Normális (igaz) visszatérési értéke van, ha a kifejezés (szemantikailag) igaz! A kifejezés lehetőségeknek 2 csoportja van: Fájlokkal kapcsolatos tesztek, adatszerkezetek relációi.

Fájlokkal kapcsolatos tesztek Csak néhány példa, az első szintaxissal test -f file test -d file test -r file test -s file # file létezik és sima fájl # file létezik és jegyzék # file létezik és olvasható # file létezik és 0-nál hosszabb stb.

Adatrelációk Példák itt is, [ ertek1 -gt ertek2 ] [ ertek1 -eq ertek2 ] stb. [ s1 = s2 ] [ s1 > s2 ] stb. [ -z s1 ] [ -n s1 ] [ s1 ] a másik szintaxissal. Igaz, ha # algebrailag nagyobb # algebrailag egyenlő # szövegként egyenlő # szövegként nagyobb # s1 füzér hossza 0 # s1 füzér hossz nem 0 # s1 füzér nem a null füzér

Jó dolog az expr parancs Szintaxisa: expr kifejezes expr kif1 op kif2 Pl: sum=0 sum=`expr $sum + 1` echo $sum Szemantika: Kiértékelődik a kifejezés és az eredmény az stdout-ra íródik. Vannak algebrai operátorok, zárójelezés lehetséges. Nézz utána! Itt parancsbehelyettesítés! Vedd észre fehér karaktereket!

bell burokprogram n=${1-1} # mindenképp 1 while [ $n -gt 0 ] do echo -n \7 # sípol n=`expr $n - 1` # csökkenti n-et sleep 1 # alszik 1 sec-t done ---------------------- Így hívd: $ bell 3 # hármat sípol

Rekurzió lehetséges Pl. a HOME-ban van egy rekurzív shell program: --------------------------------------------------- cd $1 ; ls -l # és ha $1 nem jegyzék? for i in * do if test -f $i # ez nem a legjobb! then : # do-nothing parancs else $HOME/rek $i fi done --------------------------------------------------- Így hívom: $ rek dir

A read parancs read valt1 valt2... Információátadás a sh-nek: argumentumokkal, exportált változóval, fájlokkal, read paranccsal Beolvas egy sort az stdin-ről, és az első szót a valt1-be, másodikat valt2-be s.í.t. teszi. Ha több szó, mint változó: az utolsóba a maradék szavak listája. Nem átirányítható!

Tanácsok 1 Szabályozzuk, hogy bármi is az interaktív burkunk, a bourne shell dolgozza fel burokprogramjainkat! Ha az első sor nem kommentár: az sh dolgozik, #!/bin/sh akkor is az sh dolgozik, #!/bin/ksh akkor a Korn shell dolgozza fel #/bin/csh akkor a c-shell, ezektől eltérő kommentár: az interaktív shell!

Tanácsok 2 Tanulmányozzuk a login/burokindítási startup programokat! Sajátjainkat igazítsuk! Vannak rendszer-széles és saját startupok! Korn shell login rendszerszéles: /etc/profile saját: $HOME/.profile TC shell burokindítási és login rendszerszéles: /etc/cshrc saját: ~/.cshrc ~/.login

A szűrők Szabványos bemenetüket olvassák azt szöveg-folyamnak tekintik, ami sorvég karakterekkel sorokra tagolt. A sorokat így értelmezik. Argumentumban is lehet a szabványos bemenet megadva. A szabványos kimenetükre teszik a "szűrt" (átalakított) eredményüket.