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)