Operációs rendszerek (levelező)

1. PROGRAM

Követelmények

A programot az alábbi követelményeknek megfelelően kell elkészíteni és beadni:
  1. Olvasd el és nagyon pontosan kövesd a program specifikációt és utasításokat.
  2. A specifikációban előírt függvényeveket, változóneveket, argumentumokat ne változtasd meg. Ha például egy strcpy(a,b) függvényt kell írnod, akkor sem strcpy sem a, b neve nem változtatható.
  3. Minden egyéb függvényevet, változónevet, stb ...szabadon választhatsz, de a neveknek tükrözniük kell azok funkcióját. Olyan függvény nevek, mint func vagy f nem elfogadhatóak. Azonban i például minden további nélkül használható, mint egy tömb indexváltozó.
  4. Minden forrásfájl elején egy elegendően részletes leírásnak kell lennie, amelynek tartalmaznia kell a fájl nevét, a szerző nevét, ETR azonosítóját, gyakorlati csoport számát, létrehozás dátumát, amit egy részletes kódleírás követ.
  5. A programkódot el kell látni megfelelő kommentekkel.
  6. Használj konzisztens tabulálást (emacs/xemacs-ban ez automatikusan történik).
  7. A programot mindenkinek önállóan kell megirnia.
  8. Ha az utasításokban az szerepel, hogy futtatható változatot vagy futási eredményt is be kell adni, akkor ezek hiányában a program nem értékelhető!
  9. A programot a megadott határidő előtt kell beadni. Határidő után program NEM adható be!
  10. A programot a megadott formátumban és fájlnevekkel kell beadni. Hibás formátum / fájlnév esetén a program nem értékelhető! A beadott programokon semmilyen konverziót nem hajtunk végre!
  11. A program beadásához szükséges technikai információ megtalálható a kurzus weboldalán:
    http://www.inf.u-szeged.hu/~kato/teaching/opsysl/
    

Feladatok

Határidő: 2014 május 16., 23:59
Formátum: Egyetlen tar fájl amely kizárólag a forrásfájlokat tartalmazza.
Fájlnév: <ETR azonosító>.tar. A tar fájl létrehozható az alábbi paranccsal:
  tar -cvf <tar-fájlnév> list.sh logu.sh





1. FELADAT

Irjuk meg a list.sh bash shell scriptet, amelyik az argumentumokban kapott fájlok és könyvtárak tartalmát a következőképpen listázza ki (használd az ls parancs -l opcióját!!):

A script írása során vegyük figyelembe, hogy a futtatás ideje alatt más processzek is használják a rendszert, melyek esetleg megváltoztathatják az argumentumlistában megadott fájlok és könyvtárak tartalmát, tulajdonságait. A scriptnek garantálnia kell, hogy a standard output, standard error, és a LISTA nevű változó tartalma kizárólag a sorok számában különbözik.

A scriptet interpreter fájlként írd meg!

Segítség: A script egyetlen egyszer futtassa a megfelelő ls -l parancsot. Az utolsó n sor leválogatásához használjuk a tail segédprogramot.

A megoldásodat egy list.sh nevű fájlban helyezd el.






2. FELADAT

A who, sort és awk programok felhasználásával írjunk egy olyan logu.sh nevű bash shell script-et, amely kiírja az argumentumként megadott felhasználók azonosítóját és terminál-azonosítóját, amelyen be vannak jelentkezve. A kimenet legyen úgy rendezve, hogy a megadott felhasználók azonosítója és terminál-azonosítója a bejelentkezésük sorrendjében jelenjen meg: A legrégebben bejeletkezett legelőször; mindenki annyiszor szerepeljen, ahányszor be van jelentkezve. A script nem hozhat létre fájlokat!

Példa. Tegyük fel, hogy egy UNIX-os gépen a who parancs az alábbi kimenetet adja:

arthur   pts/0        Mar  1 12:35 (pc1)
arthur   pts/1        Feb 29 16:58 (pc1)
sheila   pts/2        Feb 29 17:26 (ws2)
sheila   pts/3        Feb 28 16:19 (ws2)
mary     pts/5        Mar  4 01:17 (pc4)
Itt a legelső oszlopban szerepelnek a bejelentkezett felhasználók; a 3-5 oszlopokban pedig a bejelentkezésük időpontja. A fenti input esetén a logu.sh arthur sheila parancssor az alábbi outputot adja:
sheila   pts/3
arthur   pts/1
sheila   pts/2
arthur   pts/0

Fontos: Ha megnézitek a példát, van aki februárban, van aki márciusban jelentkezett be. Ügyelj arra, hogy a script helyesen rakja sorrendbe ezeket az adatokat.

A scriptet interpreter fájlként írd meg!

Segítség: A script például a következő lépésekkel implementálható: egy megfelelő awk program először leválogatja a kivánt sorokat a who parancs outputjából. Az így kapott outputot a sort program segítségével tudjuk rendezni (lásd man sort), amelyből egy újabb awk program adja a script végső outputját.

A megoldásodat egy logu.sh nevű fájlban helyezd el.



Last modified: Fri Apr 18 16:55:35 CEST 2014