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)