You are on page 1of 36

Linux alapok

1. előadás
Könyvészet

• http://www.cab.u-szeged.hu/local/linux/unix
• http://elmfiz.elte.hu/fizinf/OpRendszerek/index.html
• Wikipedia
Történet – UNIX

• 1969 – Ken Thomson & Dennis Ritchie & Brian Kernighan

AT&T Bell laboratórium

• 1973 – átírják C-be


• az amerikai egyetemek rendelkezésére bocsátják
• gyors terjedés, számos változat, különböző szabványok
Történet – UNIX
Történet - LINUX
• egyetemi fejlesztések -> publikus kódok
• Free Software Foundation
– ingyenes softwarekörnyezet biztosítása
– 1983, GNU projekt ("GNU's Not Unix")
to develop "a sufficient body of free
software [...] to get along without any
software that is not free."

-> GPL (General Public License)


• Linus Torvalds: ingyenes operációsrendszer mag
– 1991 – először tette közzé az interneten
a Linux kernel 0.02-es verzióját
– 1994 – Linux 1.0; 1999 – Linux 2.2
– napjainkban 10 millió számítógépen fut
Miért pont LINUX?
Hogyan működik?

Végrehajtható
programok, szkriptek

Értelmezi a felhasználói Felhasználói parancsok


parancsokat. Ez a felelős a
parancsok megtalálásáért, Shell (héj)
azok végrehajtásának
megkezdéséért.
Kernel (mag) Fájlrendszerek

Eszközmeghajtók
A kernel menedzseli a (driverek)
rendszer hardware
erőforrásait. Hardver
Alacsonyszintű működés
• Memóriakezelés: lapozás (paging); tárcsere (swapping)
• Lemez gyorsírótár (disk cache): a lemezre írás mindig egy
bufferen keresztül történik
• Többfeladatos (multitask) operációs rendszer:
– osztani kell a CPU időt a folyamatok között
– preemptív elosztás: 1/100 s az ütemezés alapegysége
• Többfelhasználós működés:
– minden felhasználó -> terminál (billentyűzet + megjelenítő egység)
> console terminál (tty)
> pszeudo terminál (pty)

– felhasználó: login név + jelszó -> UID


– felhasznláó csoportok: csoport név -> GID
– kitüntetett felhasználó: root
Fájlok
• a UNIX-ban minden fájl
• fájlrendszer:
root
– nincsenek meghajtók, Könyvtárak
(gyökér)
mindent a / könyvtárból elérhetünk
– fájlnevek:
• max 255 karakter
• kis/nagybetű érzékeny
• beillesztés (mounting)
• link:
Felhasználók
– egy fájlnak könyvtárai
több neve is lehet
– inode: bejegyzés
(név, dátum, kezdő szektor stb.)
– hard link: több inode
ugyanazzal a kezdő szektorral
– szimbólikus link: speciális fájl adatfájlok

ami egy más fájlra hivatkozik


Fájlok
• Speciális fájlnevek:
– / gyökérkönyvtár
– . aktuális könyvtár
– .. a szülő könyvtár (egy szinttel magasabban levő könyvtár)
– ~ a felhasználó saját/home könyvtára
Tipikus könyvtárstruktúra
Bejelentkezés / kijelentkezés
• username + password
• parancsértelmező (shell)

• grafikus bejelentkezés

• hálózati bejelentkezés: telnet, ssh, xdmcp


• kijelentkezés: exit / logout
A parancsértelmező (shell)
• olvassa a felhasználó parancsait és a kernel számára
emészthető formában tálalja
• a kerneltől kapott eredményeket képernyőre írja
• default shell: a belépéskor induló program
• különböző shell-ek: sh, csh, ksh, tcsh, bash
• minden shellnek van saját programnyelve
– > shell scriptek
• környezeti változók:
– PATH
– HOME
– LOGNAME
– HOSTNAME
– TERM
BASH és egyebek
• felfele nyíl – prompt history
• fájlnév kiegészítés -> TAB
• profile – bejelentkezéskor hajtódik végre (globális változók)
• bashrc – minden bash inditasakor végrehajtódik (pl. alias)

Pl. alias dir=‘ls -l’

• jelszócsere: passwd
Parancsok futtatása
• futtatás a fájl nevével: végignézi a PATH –ben megadott
útvonalakat és ha talál ilyen nevű fájlt, végrehajtja
• változók:

– megj. környezeti változót globálissá: EXPORT


• pl. ls parancs: állományok listázása

echo $LS_OPTIONS - az ls parancs beállításai


ls –a - kiírja az inicializáló fájlokat is (.valami)
ls –l - részletes információk a fájlokról
ls -t - idősorrendben listáz

• parancs [--opciók vagy -o] [argumentumok]

pl. ls –la /usr


fájltípus: jogok:
d – könyvtár r – olvashatja
b – block (spéci fájl) utolsó módosítás
w – írhatja
c – charachter dátuma
x – futtathatja
(spéci fájl) - – tiltott művelet
l – szimbólikus link
rwx r-x r-x fájl neve
s – socket
- – egyszerű fájl tujajd. csoport más

méret (byte)
linkszámláló tulajdonos neve tulajdonos csoportja -h opció (human readable)
Parancsok
• fájlok létrehozása:
$ cat > gyakorlas <<ALLJ
> Proba sor ami csak betuket tartalmaz
> Ebben a sorban mar vannak szamok is, peldaul az 1 es a 42
> Ebben a sorban nehany furcsa karakter van \% @ !
> ALLJ
$

• könyvtár létrehozása $ mkdir konyvtar

$ cd konyvtar
• belépés könyvtárba $
$
cd
cd
..
/home/student/konyvtar
$ cd ../Desktop

• állományok tartalmának megjelenítése


$ cat gyakorlas szóköz: következő oldal; Enter: egy sor előre;
$ more gyakorlas b: egy lap vissza; q: kilépés; h: help;
$ less gyakorlas /: keresés; ?: visszafelé keresés (less), help (more)
Parancsok
• állományok másolása:
cp forrásállomány célállomány (felülírja a célállomány-t)
cp -i forrásállomány célállomány (rákérdez a felülírásra)
cp állomány1 állomány2 ... állományN könyvtár
(több állományt egyszerre)
cp -r forráskönyvtár célkönyvtár (rekurzív könyvtármásolás)

• állományok átnevezése/mozgatása
mv forrásállomány célállomány (felülírja a célállomány-t)
mv -i forrásállomány célállomány (rákérdez a felülírásra)
mv állomány1 állomány2 ... állományN könyvtár
(állományok átmozgatása egy másik könyvtárba)
mv forráskönyvtár célkönyvtár (könyvtár átnevezése)
Parancsok
• állományok törlése

rm állomány1 állomány2 ... állományN


nem kérdez. TÖRÖL!
rm -r * mindent töröl lefelé
rm -r .* mindent töröl lefelé ÉS felfelé!
rm -i állomány1 állomány2 ... állományN
rákérdez a törlésre
rm -- -file kötőjellel kezdődő állomány törlése
rmdir könyvtár üres könyvtár törlése
rm -r könyvtár (nem üres) könyvtár törlése teljes tartalmával

• link létrehozása

ln létezo_nev uj_nev hard link


ln –s létezo_nev uj_nev szimbólikus link
Parancsok
• jogok:
chmod [opciok] [ugoa] [+-=] [rwx] fajlnev

pl. -R rekurzívan u user + megad


g group - töröl
o other = legyen egyenlő
a all

• tulajdonos, csoport megadása

chown [-R] user:group fajlnev

• segítség
man parancs
info parancs
apropos valami
I/O átirányítások
• alapértelmezés
standard bemenet standard kimenet
parancs
(billentyűzet) (képernyő)

• kimenet megváltoztatása
parancs > fajlnev (létrehozza a fájlot)
parancs >> fajlnev (hozzáír a fájlhoz)

• bemenet megváltoztatása
parancs < bemenet

• példák
$ ls –l /etc > tempfile
$ more < tempfile
vagy
$ cat > proba
$ cat > proba << VEGE
Programok összekötése (PIPE)
• |
• a bal oldalon levő parancs (program) standard outputját
összeköti a jobb oldali program standard inputjával

standard bemenet standard kimenet


parancs1 parancs2
(billentyűzet) (képernyő)

• példa
$ ls –la /etc | more
Szűrők
• olvas a bemenetről, valamit csinál a bemenettel, az
eredményt a kimenetre írja
• cat: a bemenetet a kimenetre írja
• wc: a bemenet sorainak, szavainak és bájtjainak számát
írja a kimenetre
$ cat gyakorlas | wc

• grep: mintaillesztést végez


$ cat gyakorlas | grep –e furcsa
$ cat gyakorlas | grep -e ^E
$ cat gyakorlas | grep –e 2$

• sort: rendezi a bemenetet (-r kapcsolóval visszafele)


• cut: kivág a bemenetből
$ cat gyakorlas | cut –c3-9
Folyamatok (processes)
• felhasználó -> egyszerre több folyamat
• egyszerre csak eggyel tud kommunikálni (foreground)
• a többi háttérben fut (background)
• háttérben indítás: parancs &
• előtérbe hozás: fg %1
• megállít + háttérbe rak: CTRL+Z
bg %job_azonosito
• vannak nem felhasználókhoz tartozó folyamatok (root)
-> démon
• a folyamatok kilépéskor leállnak, hacsak
nohup program > outputfile < inputfile
• időzítés: at 3am program&
• folyamatok kilistázása: ps top
Folyamatok (processes)
• üzenetek processzeknek:
– CTRL+Z - STOP szignál (leállít)
– CTRL+C – INT szignál (megszakít, leöl)
– kill -STOP pid
– kill -HUP pid
– kill -KILL pid
• folyamatok prioritása:
– 3 típus:
• alapprioritás $ nice –n prior_ertek
• ütemezési prioritás $ renice prior_ertek pid

• nice prioritás
Érintkezés más felhasználókkal
• who – kik használják a rendszert
• w – bővebb info a rendszert hasznalókról
• last – bejelentkezések listája
• kommunikáció a többiekkel
– write usernev [tty]
– mesg n – üzeneteket letílt
– mesg y – üzeneteket engedélyez
– talk usernev [tty]
A vi szövegszerkesztő
• visual editor
• ex, ed (sorszerkesztők) utóda
• célja: minden terminálon fusson -> kompromisszum a kényelemmel
• vi -opciók állomány1 állomány2 ... állományN
• opciók
– -R csak olvashatóra nyitja meg az állományt (:w!-vel lehet csak
menteni)
– -r az előző szerkesztés véletlen megszakadása (rendszerhiba, kilőttük
a processzt, stb.) után visszanyeri a változtatásokat. Ha nem adunk
meg állománynevet, kilistázza a visszanyerhető állományok listáját.
– +n az n. sorra ugrik az állomány megnyitása után.
• három módja van:
– parancsmód
– szerkesztési mód
– utolsó sor mód (:, /, ?)
A vi szövegszerkesztő - parancsmód
• ESC-el kerülünk bele
• a parancsok jó részét megelőzheti egy szám (n), ilyenkor annyiszor
hajtja végre a parancsot

• kilépés, állományelérés
– ZZ mentéssel
– :x mentéssel
– :q mentés nélkül
– :q! mentés nélkül
– :wq mentéssel
– :w filenév A fájl filenév állományba menti
– :w! filenév Felülírja a filenév állományt
– :e! újraolvassa a lemezről az állományt (elvesznek az addig változtatások)
– :n kilép az aktuális állományból és beolvassa a következőt
– :n! akkor is a következő állományra ugrik, ha nincs elmentve az aktuális
állomány, így a változtatások elvesznek.
– :r filenév A filenév állományt beszúrja a kurzot alatti sortól.
A vi szövegszerkesztő - parancsmód
• mozgás:
– nh balra; nl jobbra
– nk fel; nj le
– sok terminálon működnek a nyilak
– n^F következő lap; n^B előző lap
– sok terminálon működik a PgDn, PgUp
– $ sor vége
– ^ első nem üres karakter
– 0 sor eleje
– $G utolsó sor
– 1G első sor
– nG n. sorra ugrás
– n| n. oszlopba ugrik
– nw (word) a következő szó elejére ugrik
– nb előző szó elejére ugrik
– ne aktuális szó végére ugrik
A vi szövegszerkesztő - parancsmód
• törlés
– nx kurzor alatti karakter törlése
– ndw kurzortól a szó végéig töröl

– ndd kurzor sorának törlése


– cw kitörli a szó végéig a szót és szerkesztési módba kapcsol
– C kitörli a sor végéig a szöveget és szerkesztési módba kapcsol
– :g/regex/d minden olyan sort töröl, mely tartalmazza a regex
reguláris kifejezést.
• helyreállítás
– u (undo)
– alapesetben csak az utolsó parancs hatását érvényteleníti
– a mai vi klónok már képesek többszöri használatával több parancsot
is visszavonni
• kijelölés
– yy adott sor kijelölése (yank)
– ml ... y'l sortartomány kijelölése (mark, yank)
A vi szövegszerkesztő - parancsmód
• beszúrás
– i (insert) az adott kurzorpozíciótól szerkesztési módba kapcsol
– a (append) az adott kurzorpozíció utántól szerkesztési módba kapcsol
– I a sor elejétől szerkesztési módba kapcsol
– A a sor végétől szerkesztési módba kapcsol
– o a következő sortól szerkesztési módba kapcsol
– O az előző sortól szerkesztési módba kapcsol
– np kijelölt sor(ok) beszúrása az adott sor után
– nP kijelölt sor(ok) beszúrása az adott sor elé
– R felülírásba kapcsol
– nrl az aktuális betűt kicseréli az l betűre
• formázás
– nJ hozzáfűzi az aktuális sorhoz a következő sort
– n~ kicseréli a karaktert a kis/nagybetűs párjára
– n<< egy tabulátorpozícióval balra tolja a sort
– n>> egy tabulátorpozícióval jobbra tolja a sort
– % megkeresi az adott zárójelhez -- (), {}, [] -- tartozó párját.
A vi szövegszerkesztő - parancsmód
• keresés
– /regex [Enter] előre keres
– ?regex [Enter] hátrafelé keres
– n az előző regex következő keresése előre
– N az előző regex következő keresése hátra
• helyettesítés
– :n,ns/regex/helyettesítés/ első előfordulás
– :n,ns/regex/helyettesítés/g minden előfordulás helyettesítése
– n:
• sor sorszáma.
• . aktuális sor
• $ utolsó sor
• 'l az ml paranccsal kijelölt sor
• lehet 0,1 vagy 2 szám. 0: aktuális sor, 1: megadott sor, 2: sortartomány
• % egész állomány
• shell parancs futtatása:
– :!shell-parancs lefuttatja a shell-parancsot
– :r !shell-parancs lefuttatja a shell-parancsot és az eredményt a kurzot alatti
sortól elhelyezi. Pl. :r !ls
A vi szövegszerkesztő – reguláris kifejezések
• speciális (jelentésű karakterek)
– ^ sor eleje
– $ sor vége
– . tetszőleges karakter
– * az előző karakter tetszőleges (akár nulla) számú előfordulása
– \< szó eleje
– \> szó vége
– \(...\) csoportosítás (helyettesítésnél érdekes)
– \n helyettesítésnél: az n. csoport értéke
– s/^\(ab.*k\).*\(aj.*o\)/jo is az \1 de nem a \2/ \1 lehet ablak, ablakok,
ablak is van a hazban a k(ert fele), \2 lehet ajto, ajato(llah)
– [] a [] közt felsorolt karakterek bármelyike
– [a-zA-Z] betűk
– [0-9] számok
– [a-zA-Z0-9] betűk vagy számok
– [^l] nem l karakter
– \^ a ^ karakter
– \/ a / jel
Ki a UNIX guru?
kezdő (beginner)
bizonytalan a terminál fogalmát illetően
még meg kell tanulnia a vi alapjait
még nem találta ki, hogyan listázza ki a könyvtárat
még problémái vannak, hogy <RETURN> -t üssön minden egyes bemeneti sor után

növendék (novice)
tudja, hogy az ls listázza ki a könyvtárat
használja a szövegszerkesztőt, de vájnak nevezi.
hallott már a C-ről, de még sohasem használta
már megvolt az első kellemetlen tapasztalata az rm paranccsal
azon töpreng, hogy miképpen lehetne levelet olvasni
nem érti, hogy a mellette ülő miért szereti annyira a Unix-ot

felhasználó (user)
használja a vi-t és az nroff-ot, de még tapasztalatlanul
már hallott a reguláris kifejezésekről, de még egyet sem látott
adott karakterláncokat keres az egrep-el
már rájött, hogy a '-' jel opciót szokott megelőzni
azon töpreng, hogy miként lehet átmozgatni egy könyvtárat
megpróbálkozott egy C programm megírásával, de úgy döntött, hogy marad a PASCALnál
azt gondolja, hogy az sdb egy sztereó felszerelés típusa
már tudja olvasni a leveleit, és rá szeretne jönni, hogyan olvassa az újságokat (news)
Ki a UNIX guru?
nagytudású felhasználó (knowledgeable user)
gond nélkül használja az nroff parancsot, és már tanulja a tbl és eqn parancsokat
azt hiszi, hogy az fgrep a fast grep-et jelenti
rájött, hogy a mv átmozgatja a könyvtárakat
megtanulta, hogy a learn nem segít
valaki megmutatta neki, hogy hogyan kell C programmot írni
egyszer már használta a sed parancsot szöveghelyettesítésre
már látta az sdb-t, de nem használja
azt gondolja, hogy a make parancs a gyáváknak lett kitalálva

szakértő (expert)
szükség esetén használja a sed-et
makrókat használ a vi-ban, szükség esetén az ex-et is kezeli
minden lehetséges alkalommal ír a news-ra
időnként ír egy csh szkriptet
C programmokat ír vi-al és cc-vel lefordítja őket
kitalálta, hogy mire valók && és || jelek
azt gondolja, hogy az emberiség történelme a !t paranccal kezdődött
Ki a UNIX guru?
hacker
gond nélkül használja a sed és awk parancsokat
a vi dokumentálatlan tulajdonságait használja
a cat > segítségével ír C kódot és !cc -vel fordítja azt le
az adb-t használja, mivel nem bízik a forrásszintű debuggolásban
meg tudja válaszolni a felhasználói környezettel kapcsolatos kérdéseket
saját 'nroff' makrókat ír a standard makrók kiegészítésére
Bourne shell-ben (/bin/sh) ír szkripteket
guru
gond nélkül használja az m4 és lex parancsokat
gépi kódú programot ír a cat > használatával
a futó kernelen használja az adb parancsot
átalakítja a parancsokat a forráskód megpatkolásával
reggelihez eszközkezelő forráskódot olvasgat
minden Unix kérdést meg tud válaszolni egy kis gondolkodás után
mindenhez, amihez kettő vagy annál több soros parancsra lenne szükség, a make-t használja
megtanulta, hogy törje fel a biztonsági rendszert, de már nem érdekli
varázsló (wizard)
eszközmeghajtókat ír cat > segítségével
a programhibákat a bináris kód megpatkolásával javítja
minden kérdést meg tud válaszolni annak elhangzása előtt
saját troff makrócsomagokat ír
tegező viszonyban van Dennis-szel, Bill-el és Ken-el

You might also like