Sunteți pe pagina 1din 13

Structura Linux

Un sistem de operare este format din urmatoarele componente:

1. Kernel
Reprezinta partea cea mai importanta a OS, cea care lucreaza cu CPU si este cea mai apropiata de
Hardware. Fizic kernelul se regaseste intr-un fisier iar de cele mai multe ori acesta este /boot/vmlinuz-
version_no

Functii:
I/O Management;
managementul memoriei RAM si SWAP;
apelarea functiilor de sistem;
lucrul cu echipamentele periferice prin drivere;
managementul sistemului de fisiere si al proceselor care ruleaza;

Ultima versiune de Kernel este 2.6.32.7 (28.01.2010)

Memoria SWAP reprezinta un tip special de memorie care se gaseste pe Hard disk, dar care este
folosita de Kernel ca si cand ar fi memorie RAM. Dimensiunea acesteia se recomanda a fi de doua ori
mai mare decat RAM. Pe Linux se foloseste o partitie speciala pentru memoria de tip Swap.

2. Shell
Utilizatorul nu poate comunica direct cu Kernelul. Accesul la functiile kernelului se face prin
intermediul shell-ului. Acesta este un program care primeste comenzi de la user sau alte aplicatii, le
interpreteaza si le transmite kernelului pentru a le executa.
Printre functiile shell-ului se afla si customizarea intregului environment (mediu de lucru) precum si
programarea folosind shell scripts.

Exista mai multe shell-uri printre cele mai importante amintim:


a) Bourne Shell (sh) - Primul shell pentru Unix. A fost dezvoltat de Stephen Bourne la AT&T. Nu are
foarte multe optiuni.
b) Korn Shell (ksh) - A fost dezvoltat de David Korn la Bell Labs.
c) C Shell (csh) - A fost dezvoltat de Bill Joy la Sun si se bazeaza pe limbajul de programare C.
d) Enhanced C Shell (tcsh)
e) Z Shell (zsh) - Este asemanator de Korn shell dar are mai multe functii.
f) Bash (bash) - Bourne Again Shell - Default pe Linux. Cel mai folosit si mai puternic shell.

3. Sistemul de fisiere . Pentru detalii cititi subcapitolul "Sistemul de fisiere" a acestui curs

Structura unei comenzi


Pentru managementul sistemului Linux (copiere de fisiere sau directoare, stergere, redenumire, afisare
continut, listare, editare etc) se folosesc comenzi. Exista peste 400 comenzi de baza in Unix/Linux.
Exista comenzi incluse in shell ( Exemplu: alias, cd, umask) si comenzi independente reprezentate prin
programe ( Exemplu: ls, cp, rm etc).
Structura unei comenzi este urmatoarea:
NUME_COMANDA OPTIUNI [ARGUMENT 1] [ARGUMENT 2]

NUME_COMANDA = reprezinta numele comenzii. Trebuie sa apara primul. Directorul in care se


gaseste comanda trebuie sa fie in variabila PATH (la fel ca si in WINDOWS).
Nota
In contrast cu Windows, in Linux directorul curent reprezentat prin . (punct) nu se gaseste in
PATH. Pentru a executa o anumita comanda nu este suficient sa ne mutam in directorul care
contine programul respectiv sau comanda si sa executam respectiva comanda.

OPTIUNI
pot fi scurte (o litera). Exemplu: ls -R sau pot fi combinate mai multe litere. Exemplu: ls -Fal
pot fi formate din unul sau mai multe cuvinte. Exemplu: smart --ignore-locks

ARGUMENTE
reprezinta scopul comenzii. Pot fi fisiere sau directoare, adrese IP, nume de domenii DNS etc

Comenzile ls si less
1. Comanda ls
Una dintre cele mai folosite comenzi in Linux este ls (list). Aceasta afiseaza informatii diverse despre
fisiere si directoare.

ls OPTIONS FILE - listeaza continut


-l listare lunga, sortare dupa nume
-F afiseaza tipul fisierului
-t sortare dupa mtime
-h human readable
-i afiseaza inode
-R afiseaza recursiv
-S sortare dupa marime
-d afiseaza informatii despre director in loc de continutul acestuia
-c afiseaza ctime (in combinatie cu -l)
-u afiseaza atime (in combinatie cu -l)
-a afiseaza hidden files

2. Comanda less
Intreaga configuratie a unui sistem Linux, fie ca ne referim la servere care ruleaza, firewall sau la
rezolutia monitorului se gaseste aproape exclusiv in fisiere text. Una dintre sarcinile cele mai frecvente
ale unui admin este vizualizarea diferitelor fisiere text. Cea mai folosita comanda pentru vizualizare
care se gaseste pe orice distributie de Linux sau chiar de Unix este less.

less FILE - afiseaza continut fisier text


In timpul vizualizarii continutului fisierului putem folosi urmatoarele taste:
enter afisare urmatorul rand
space afisare urmatoarea fereastra
d afisare urmatoarea jumatate de fereastra
u afisare jumatatea de fereastra anterioara
/sir cautare sir forward
?sir cautare sir backward
n urmatoarea aparitie a sirului
N aparitia anterioara a sirului
g salt la inceputul fisierului
G salt la sfarsitul fisierului
q quit
h help
Resurse man ls man less
Durata: 2.28 min
Marime: 1.16MB

Console/terminale virtuale
In Linux si Unix exista conceptul de Consola Virtuala si Terminal Virtual sau Terminal Text.

Considerente istorice
Initial se folosea un singur calculator de tip mainframe sau similar la care se conectau mai multi useri
simultan folosind fiecare o consola. O consola era reprezentata printr-un ansamblu de tastatura si
monitor.

Linux pune la dispozitia utilizatorului 7 console virtuale (logice) care pot fi accesate folosind
combinatia de taste CTRL+ALT+F1 pt consola 1, CTRL+ALT+F2 pentru consola 2 etc.
In consola 7 este pornit mediul grafic.
Terminal windows, terminal emulator sau terminal virtual reprezinta o consola pornita din modul
grafic.
Nota
Fizic, cele 7 console virtuale sunt reprezentate prin fisierele /dev/tty1-7, iar terminalele virtuale
sunt reprezentate prin fisierele /dev/pts*
Fisierul /etc/securetty contine pe fiecare linie locatiile de unde userul root are voie sa se logheze

Runlevel
Reprezinta starea in care se afla si opereaza sistemul de operare la un anumit moment dat.

Exemplu: un sistem de operare Linux care intra in runlevel 0 se opreste, daca intra in runlevel 6 tocmai
se restarteaza.

In functie de runlevel-ul in care opereaza sistemul de operare exista anumite facilitati oferite si anumite
procese care ruleaza. Un sistem de operare Linux se poate afla la un moment dat intr-un singur
runlevel.

Linux runlevels
Ru
nle Semnificatie Descriere
vel
Halt, Shut Oprirea sistemului, aducerea lui in starea in care se intrerupe alimentarea
0
down cu energie electrica
1 single-user Modul administrator folosit pentru mentenanta. Nu exista retea, mediu
grafic si doar sistemele de fisiere locale sunt montate. Exista un sigur user
care se poate loga in sistem si anume root. Este echivalentul lui Safe-
Mode din Windows
2 multi-user Modul multi-user fara retea.
multi-user +
3 Runlevel default pentru servere.
retea
4 N/A Nu exista
multi-user +
5 retea + mediul Run level default pentru Desktop
grafic
6 reboot/restart Restartarea calculatorului

Mai poate exista runlevel-ul S sau s, care nu este folosit direct ci de catre programe si scripturi care se
executa cand se intra in runlevel 1.

Pentru trecerea dintr-un runlevel in altul se foloseste comanda: init noul_runlevel


Exemplu
1. Restartare calculator
/sbin/init 6

2. Oprire calculator
/sbin/init 0

3. Intrare in single-user mode


/sbin/init 1

4. Revenire in runlevel 5
/sbin/init 5

Nota
In cazul distributiilor bazate pe Debian precum Ubuntu runlevel-urile existente au o alta
semnificatie si anume nu se diferentiaza intre runlevel 2,3,4 si 5 iar default este runlevel 2.

Resurse
· Runlevel - Wikipedia
Prezentare generala
Sistemul de fisiere reprezinta modul de organizare, structurare si accesare a fisierelor, directoarelor si
linkurilor pe hard disk.
Modul de organizare, accesare si recunoastere a particularitatilor fiecarui sistem de fisiere cade in
sarcina Kernelului. Acesta trebuie sa "ofere suport" pentru acel sistem de fisiere.

In prezent Kernelul de Linux recunoaste majoritatea sistemelor de fisiere existente: fat16, fat32, ntfs,
ext2, ext3, ReiserFS, nfs, smb, iso9660 etc.
Pentru majoritatea distributiilor de Linux default este ext3 - Third Extended File System (default pt.
RedHat, Fedora, Ubuntu) sau ReiserFS (default pt. Slackware, SuSE, Xandros, Yoper).

De multe ori in studiul sistemelor de operare Unix/Linux gasim sintagma - "everything is a file". Acest
lucru se refera la faptul ca fiecare program, sau dispozitiv hardware este reprezentat printr-un fisier. Nu
mai exista alta modalitate de reprezentare a informatiei.
In Linux fisierele sunt case sensitive - se face distinctie intre litera mare si mica.
Un fisier se considera ascuns (hidden) daca numele sau incepe cu "." (punct).

Exemplu
/dev/hda1 reprezinta prima partitie de pe hard disk-ul primary master
/dev/cdrom reprezinta CD-ROM-ul. O scriere sau o citire de pe hard disk sau CD inseamna de
fapt o scriere sau citire din fisierul respectiv.

In Linux un director este tot un fisier (dar special care are anumite proprietati).
Sistemul de fisiere in Linux este arborescent (ca si in windows) doar ca avem un sigur arbore chiar
daca avem mai multe partitii sau hard disk-uri.
Radacina sistemului de fisiere se numeste ROOT si se noteaza cu "/".

FHS
De-a lungul timpului s-a incercat standardizarea sistemului de fisiere pentru sistemele Unix/Linux
luand nastere astfel FHS - Filesystem Hierarchy Standard. Cu toate acestea nu exista un standard
general acceptat in prezent.

Principalele directoare care exista in majoritatea distributiilor de Linux si Unix sunt:


/sbin - utilitare pentru administrarea sistemului, multe accesibile doar lui root
/bin - utilitarele sistemului care trebuie sa fie disponibile atat userilor normali cat si lui root
/dev - fisiere speciale care reprezinta dispozitivele din sistem
/lib - librarii de functii folosite de aplicatii, kernel etc
/var - fisiere care in general isi modifica continutul (loguri, mailuri etc)
/usr - o ierarhie asemanatoare cu "/" ( /usr/sbin, /usr/bin, /usr/etc )
/etc - fisierele de configurare ale sistemului, ale serverelor care ruleaza etc
/root - home directory userului root
/home - home directory pentru userii din sistem. Fiecare user are home directory un director in
interiorul lui /home (de cele mai multe ori directorul poarta numele userului)
/proc - printre functiile principale ale kernelului este si aceea de a controla dispozitivele fizice si de a
coordona modul in care procesele folosesc aceste resurse. In /proc se gaseste statusul curent al
kernelului cu toate informatiile pe care acesta le cunoaste. Aceste fisiere si directoare sunt create
automat la butare. Ele se numesc virtuale. De aici vine si numele de "Sistem de Fisiere Virtual" (acesta
este proc). Aceste fisiere contin multe informatii utile, iar cu toate acestea dimensiunea lor este de 0
bytes.

Nota
Fisierele din /proc pot fi modificate pentru a configura sistemul "on-the-fly".
Exemplu: echo "new-hostname" > /proc/sys/kernel/hostname

/media - mount point pt. sisteme de fisiere temporare


/mnt - mount point pentru sisteme de fisiere remote
/lost&found - fisiere care au fost salvate in timpul unui "failure"
/boot - fisiere necesare boot loader-ului, kernel-ului
/opt - programe si aplicatii adaugate ulterior care nu fac parte din distributie
/cdrom - mount point pt CD
Mount Point - reprezinta locul din sistemul de fisiere UNIC in care se alipesc sisteme de fisiere de pe
alte partitii locale sau externe, de pe CD-ROM/DVD-ROM, USB Stick etc.

Nota
Partitia swap nu are mount point
Resurse FSH - PDF Download
Structura sistemului de fisiere
Sistemul de fisiere in Linux este arborescent si unic. Radacina se numeste root si se noteaza cu "/".
In Linux fisierele sunt case-sensitive - se face distinctie intre litera mare si mica.

In Linux "totul este un fisier". Nu mai exista alta forma de reprezentare a informatiei.

Un sistem de fisiere poate fi impartit in 4 parti distincte in urmatorea ordine:


1. Boot Block - aflat la inceputul partitiei si care contine cod (Boot Loader) pentru a incarca sistemul
de operare.
2. Super Block - contine informatii actuale despre sistemul de fisiere: marimea acestuia, nr. de blocuri
de date libere, locatia acestora, marimea lui inode table, nr maxim de inoduri etc.
3. Inode Table (List) - Lista statica definita initial la instalare si care nu se poate schimba si care contine
inodurile din sistem.
4. Data Blocks - Datele sunt salvate in blocuri (in general 1 block = 512 bytes).

Boot Block Super Block Inode Table Data Block

Structura unui fisier


Un fisier consta in informatia pe care acesta o contine (text, date, imagine, sunet etc) dar si o structura
de date care se numeste inode (index node) si care contine informatii suplimentare despre acel fisier.

Standardul POSIX stabileste ca fiecare inode sa contina urmatoarele informatii:


tipul de fisier
owner
group owner
drepturile de acces (citire, scriere, executie) pentru owner, group si others
nr. de hard linkuri catre aceiasi informatie
atime
ctime
mtime
marimea unui fisier (size)
pointer catre blocurile de date care reprezinta informatia tinuta de fisier.
inum - nr. intreg care identifica unic fiecare inode

Nota
Atentie !!! Numele fisierului nu este pastrat in structura inodului.

Un director este un fisier de tip container care contine perechi de nume_fisier si inode-ul corespunzator.

In momentul in care ne referim (utilizatorul sau un proces) la un fisier, kernelul cauta in structura de
directoare conform cu calea relativa sau absoluta de referire la fisier, inode-ul corespunzator pentru acel
nume.

Fiecare inode se identifica unic printr-un numar de tip intreg numit "inode number" sau i-number.
Acesta poate fi vizualizat folosind comanda ls -i

Exista un nr. maxim pt. acest i-number care se defineste automat la instalarea sistemului in functie de
dimensiunea partitiei si deci exista un nr. maxim de fisiere (comanda df -i).
In Linux fiecarui fisier sau director i se ataseaza 3 (trei) timpi:
ctime (change time) - reprezinta data la care s-au modificat informatiile continute in inode-ul fisierului
sau directorului (permisiuni, owner, group etc). Nu se refera la timpul cand au avut loc modificari ale
continutului. Se afiseaza cu comanda ls -lc
mtime (modify time) - data la care s-a modificat informatia din fisier. Se afiseaza cu ls -l
atime ( access time ) - data la care s-a afisat continutul fisierului. Se afiseaza cu ls -lu

Comanda stat afiseaza de asemenea acesti 3 timpi.

Pentru modificarea celor 3 timpi ai unui fisier sau director se foloseste comanda touch
touch OPTIONS FILE - listeaza continut
fara optiuni modifica atime, mtime si ctime cu timpul curent
-t
motifica atime si mtime cu DATE_TIMESTAMP in loc de data curenta
DATE_TIMESTAM
ex: touch -t 200301231230 a.txt
P
modifica atime si mtime cu DATE_STRING
-d DATE_STRING
ex: touch -d '1 May 2006 10:22' /etc/group
modifica doar atime cu data curenta sau cu o alta data daca este specificata
-a
ex: #touch -a -d '23 May 2006 10:22' /etc/group
-m modifica doar mtime cu data curenta sau cu o alta data daca este specificata
-r schimba atime si mtime cu cele ale lui REFERENCE_FILE
REFERENCE_FILE ex: touch -r b.txt a.txt
Nota
ctime nu poate fi setat in mod expres si independent de catre user
Resurse POSIX man touch
Durata: 2.58 min
Marime: 742KB
Tipuri de fisiere
In Unix si Linux fisierele se impart in urmatoarele categorii:
1) fisiere standard (regular files). Acestea pot fi text, executabile, binare etc
2) directoare. Acestea sunt tot fisiere care au rol de container pentru alte fisiere sau directoare. Ele
reprezinta un tip special de fisier (container) folosit pentru formarea structurii arborescente.
3) link-uri. Pot fi soft links/sym links (echivalentele shortcut-urilor din windows) si hard links - se
refera la aceeasi zona de date, dar identificata prin nume diferite.
4) fisiere speciale (device files). Toate dispozitivele fizice (hard disk, RAM, etc) sunt reprezentate
printr-un fisier. Accesul la aceste dispozitive se realizeaza prin scrierea/citirea din aceste fisiere.

Exista mai multe feluri de fisiere (dispozitive) speciale:


a) de tip caracter - folosite pentru accesarea byte cu byte a fisierului care reprezinta dispozitivul
hardware ( Exemplu: /dev/pts/0)
b) de tip bloc - folosite pentru accesarea in blocuri de date a fisierului care reprezinta dispozitivul
hardware ( Exemplu: /dev/sda1)
c) named pipes - procesele in Linux comunica cu ajutorul unui pipe (conducta) care se creaza cu
ajutorul caracterului "|". In acest mod outputul unui proces poate fi directionat ca input pentru un alt
proces. Acest tip de pipe exista doar pe timpul executiei comenzii. Exista un al doilea tip de pipe numit
"named pipe" introdus initial in Unix-ul de tip AT&T si care este folosit pentru comunicarea dintre
procese prin intermediul unei cozi de tip FIFO (First In First Out). Acest tip de fisier se creaza de catre
administratorul sistemului pentru a interconecta 2 procese cu comanda mkfifo
d) Socket (unix domain socket) este asemanator cu pipe-ul, adica se foloseste pentru a conecta doua
procese. Exista o oarecare asemanare cu socketul TCP/IP chiar daca este vorba despre un alt concept.

Comanda ls -lF afiseaza diferitele tipuri de fisiere folosind anumite simboluri:


Simb
Descriere
ol
nimic fisier standard
/ director
* fisier executabil (ex: /bin/ls)
@ sym link (ex: /etc/grub.conf)
= socket (ex: /dev/log) - procesele scriu in /dev/log pentru a comunica cu syslogd
| named pipe (ex: /dev/initctl) - folosit pentru a comunica cu init

Durata: 1.42 min


Marime: 467KB
Links
In Linux, comparativ cu Windows exista 2 categorii de linkuri:
1) hard links
se refera la asocierea unui nume de fisier cu un inode number (asocierea va fi prezenta intr-un director).
Avem astfel doua sau mai multe nume care sunt asociate cu aceiasi structura de tip inode;
nr. de hard linkuri din structura inodului este incrementat de fiecare data cand se creaza un nou hard
link;
in momentul in care se sterge un fisier, se decrementeaza nr. hard linkurilor din inode, iar cand se ajuge
la zero este dealocat inodul si marcat ca liber;
nu se pot crea MANUAL hard linkuri catre directoare. Un director nou creat are default 2 hard linkuri.
De fiecare data cand se creaza un subdirector, numarul de hard linkuri al directorului parinte este
incrementat fiindca se creeaza o noua referinta catre acesta si anume ".." care exista in orice director.
Daca un director are 17 hard linkuri inseamna ca acesta contine 16 subdirectoare. Al 17-lea este "." care
se gaseste in orice director.
nu se pot crea hard linkuri intre fisiere de pe partitii diferite;
daca fisierul initial este sters, redenumit sau mutat hard linkul nu este influentat;
un hard link se creaza folosind comanda ln

2) soft links / sym links


echivalentul shortcuts din Windows;
daca fisierul sau directorul initial este sters, mutat sau redenumit soft linkul nu mai functioneaza;
listarea continutului folosind comanda ls -F identifica un symlink dupa caracterul "@" de la sfarsitul
numelui;
se pot crea symlinkuri catre directoare sau fisiere de pe alte partitii;
un symlink se creaza folosind comanda ln cu optiunea -s

Exemplu
1. Pentru a crea un soft link numit mylink.txt care pointeaza la /home/stud/proiect.txt se
foloseste comanda:
ln -s /home/stud/proiect.txt /home/stud/mylink.txt

2. Pentru a crea un hard link al lui /etc/passwd in /etc numit hl-passwd se foloseste comanda:
ln /etc/passwd /etc/hl-passwd

Piping & Redirectare


Unix/Linux este un sistem de operare care se bazeaza pe comenzi foarte specializate care lucreaza
impreuna. Astfel mai multe comenzi pot fi combinate si se poate crea astfel o comanda complexa.

Se foloseste astfel caracterul pipe "|".

Exemplu
ls -l | less - outputul comenzii ls -l este trimis lui less pentru paginare
ls -a | sort - outputul comenzii ls -l este trimis comenzii sort care sorteaza in ordine alfabetica
Redirectarea outputului

In general scopul unei comenzi este de a trimite outputul catre standard output care este monitorul. Este
posibil ca outputul unei comenzi sa fie redirectat catre un fisier care exista sau nu. Se foloseste ">" sau
">>"
Exemplu
ls -l /bin > /home/student/binaries.txt - creaza fisierul /home/student/binaries.txt (daca acesta exista
il suprascrie) care va contine outputul comenzii ls -l /bin

ls -l /sbin >> /home/stud/binaries.txt - adauga outputul comenzii ls -l /sbin fisierului


/home/student/binaries.txt (daca acesta nu exista il creaza)

Outputul unei comenzi poate fi redirectat in afara de standard output si catre standard error. Pentru
acesta se foloseste "2>".
Pentru a combina standard output cu standard error se foloseste "&>"
Exemplu
gcc program.c > output.txt 2> errors.txt - redirecteaza outputul compilarii fisierului program.c catre
output.txt, iar erorile sunt redirectate catre fisierul errors.txt

gcc program.c &> output.txt - redirecteaza catre fisierul output.txt atat standard output cat si
standard error.

Durata: 2.39 min


Marime: 2.21MB

S-ar putea să vă placă și