UNIX terminálkezelés

UNIX terminálkezelés

A UNIX/LINUX rendszerekben a terminálkezelést a kernel részeként működő terminál driver biztosítja. Ez egyrészt egy általánosított API (Application Programming Interface) réteget nyújt a programok számára, másrészt a hagyományos terminálok viselkedésének egy jól definiált halmazát valósítja meg a felhasználói felületen.
A működési koncepció nagyon egyszerű: a 70-es évek teletype (mechanikus írógép számítógéphez csatolva) eszközének működését modellezve egységes felületet ad a programok parancssoros felületének kialakításához. Ennek lényege, hogy a begépelt karaktereket egy pufferben gyűjti egészen az ENTER megnyomásáig. Az ENTER megnyomásakor pedig a puffer tartalmát átadja a programnak. Így az ENTER megnyomásáig a buffer tartalma módosítható a KILL és ERASE karakterek segítségével.
A terminál driver ezen egyszerű sorszerkesztő funkció mellett a 70-es évek adatátviteli eszközeinek kezelésével kapcsolatos feladatokat is ellát (soros vonali protokoll támogatása, modem jelek kezelése, és bizonyos hardver elemek szimulálása). Ma ezek nagy része normál körülmények esetén nem használt, de még ma is előfordul a soros vonalon történő kommunikáció az irányítás és vezérléstechnikában.
A fent vázolt egyszerű működési mód azonban nem alkalmas a képernyő orientált alkalmazások kiszolgálására, ezért a driver működési módját változtatni lehet az aktuális absztrakciós szintnek megfelelően:

cooked mode
Ekkor a fent leírtaknak megfelelően működik a driver.
cbreak mode
Ekkor a beírt szöveg nem javítható, mert a driver nem gyűjti a karaktereket a bufferben, hanem azonnal átadja a programnak. Ugyanakkor a modemvezérlő és ún kontroll (interrupt, quit) funkciók működnek.
raw mode
A kontrol funkciók sem működnek. A beírt karaktereket azonnal megkapja a program.

A parancssoros alkalmazások használatakor nagyon fontos a terminal driver helyes beállítása, a konkrét megjelenítő eszközzel való összehangolása. Ellenkező esetben jelentős kihívásokat jelenthet akár egyetlen helyes parancssor leírása is. A terminál driver paramétereinek, ütemmódjának lekérdezése és beállítása az stty paranccsal történik. Ez a feladatsor ennek rejtelmeit mutatja be. Az első 10 feladat a rosszul beállított az erase karakter hatását mutatja be. A továbbiak bonyolultabb funkciókat szemléltetnek.

A továbbiakban feltételezzük, hogy a felhasználói interfészt MS WinX rendszerben futtatott ssh kliens adja.

    Amennyiben nincs a gépén telepítve a putty a program, úgy töltse le és installálja azt (Segédanyagok -> Puskák, letöltések)
  1. Jelentkezzen be az ural2 szerverre a putty ssh klienssel!
  2. Az stty -a paranccsal ellenőrizze, hogy milyen erase karaktert használ pillanatnyilag a terminal handler!
  3. Ellenőrizze, hogy milyen karakterkódot küld a Putty a Backspace gombra! (Jobb gomb a PuTTY ablak fejlécén -> Change Setting... -> Keyboard).
  4. A cat egy standard UNIX program, ami paraméter nélkül elindítva a szabványos bemenetről (most a billentyűzet) olvasott fájlt kiírja a szabványos kimenetre (képernyő).
  5. Állítsa úgy be a PuTTY backspace karakterét, hogy ne egyezzen a terminal handler beállításával!
  6. Indítsa el a cat programot, majd írjon be egy tetszőleges szöveget! Pl:
    standard inputrol fajl vegeig olvas.
    A fajl veget sor elejen ctrl-d jelzi.
    Az enter leütése előtt használja a Backspace gombot a visszatörlésre!
  7. Vegye észre, hogy a backspace karakter nem működik helyesen!
  8. Zárja enter-rel második sort is jelezze a fájl végét (EOF = ctrl+D)!
  9. Az stty erase paranccsal állítsa be a jó karaktert! (stty erase ^H vagy stty ^?)
  10. Próbálja ki a cat parancsot újra! (cat)
  11. Kapcsolja ki a terminal handler kanonikus működési módját, és álltsa 1-re a pufferelt karakterek számát! (stty -icanon min 1) Ezzel jelentésüket vesztik a javító karakterek (erase, kill, werase, eof), és a handler minden leütött karaktert változtatás nélkül azonnal (min = 1) továbbít a programnak.
  12. Próbálja ki a cat parancsot újra! Most csak ctrl+C-vel tud kilépni, mert a ctrl+D is elvesztette speciális jelentését.
  13. Kapcsolja vissza a kanonikus üzemmódot! (stty icanon min 4)
  14. Kapcsolja ki az echo-t! (stty -echo)
  15. Probálja ki ismét cat programot! (cat)
    Most nem látja, hogy mit gépel, mert a terminal handler nem írja vissza, de attól még a program működik! Ne feledje, hogy a fájl vége most is ctrl+D!
  16. Állitsa vissza az echo-t! (Adja ki az stty echo vagy a reset parancsot!) Ha mindent pontosan végrehajtott, akkor az alábbi képernyőképhez hasonlót kell látnia.

Jó munkát!

Utolsó frissítés: 2018-02-08 13.21