Sunteți pe pagina 1din 11

Lucrarea 1

Introducere n LINUX
1. Introducere teoretic
1.1. Ce este Linux ?
Linux este un sistem de operare compatibil UNIX (de fapt este o clon a acestui sistem), a
crui realizare a nceput ca un hobby al unui student finlandez, Linus Torvalds. Acesta a ncercat s
dezvolte un sistem de operare inspirat de sistemul Minix, creat de Andrew Tanenbaum. Linux este un
sistem de operare gratuit, de a crui dezvoltare se ocup programatori entuziati din toat lumea, care
i pun la dispoziie programele i comunic cu ajutorul Internetului.
Sistemul de operare, mpreun cu unele aplicaii pot fi gsite sub form de "distribuii", care
sunt o modalitate de a integra pachetele software existente pentru Linux.
Acest sistem, la fel ca majoritatea sistemelor UNIX, este scris aproape n ntregime n limbajul
C. Pentru Linux, licena sub care este distribuit (chiar dac este gratuit, are totui o licen) specific
faptul c codul surs al nucleului sistemului i a celorlalte componente poate fi obinut n mod gratuit
de pe Internet.
Acest lucru permite oricui s inspecteze i s modifice acest cod, pentru a-l mbunti sau a-l adapta
nevoiilor proprii.

1.2. Caracteristicile sistemului de operare Linux


Linux este un sistem de operare multitasking, multiuser care poate rula pe mai multe
platforme: Intel, DEC Alpha, PowerPC i respect urmtoarele standarde la nivel de cod surs: IEEE
POSIX.1, UNIX System V, Berkely System Distribution UNIX.
Alte faciliti: suport pentru mai multe sisteme de fiiere: ext2 (specific Linux), vfat (MS DOS
/ MS Windows), Xenix, UNIX System V, ISO 9660 CD-ROM, ntfs (read-only), hpfs, minix. Linux
folosete paginarea pentru alocarea memoriei virtuale. Pn la 1Gb de spaiu de "swap" poate fi creat.
De asemenea, Linux vine cu o implementare complet a softului de reea pentru TCP/IP:
drivere pentru multe plci de reea, protocoalele SLIP (Serial Line IP), PPP (Point to Point Protocol),
PLIP (Parallel Line IP), NFS (Network File System - dezvoltat de SUN Microsystems - protocol care
permite utilizarea unitilor de stocare aflate n reea ca i cum acestea s-ar afla pe calculatorul local).
De asemenea, este prezent ntreaga suit de aplicaii TCP/IP: telnet, FTP, NNTP, SMTP .
Nucleul sistemului folosete modul protejat al procesoarelor familiei i386, folosind facilitile
multitasking ale acestor procesoare.
Programele executabile folosesc biblioteci de subrutine comune, editarea de legturi cu
programul care se execut se face n mod dinamic (asemntor cu DLL-urile din MS Windows)

2. Desfurarea lucrrii
2.1. Intrarea n sistem
Cum am spus mai nainte, Linux este un sistem de operare multiuser. Fiecare user este
identificat de sistem printr-un nume de "login" i o parol (analog cu Novell NetWare). Aplicaia cu
care ne vom conecta la server-ul Linux este telnet. Aceast aplicaie (care folosete protocolul cu
acelai nume) face din calculatorul pe care este rulat un terminal pentru server-ul Linux. Cu alte
cuvinte, calculatorul pe care lucrai reprezint doar o consol (tastatur + ecran) pentru server-ul Linux,
toate aplicaiile fiind executate de acesta. n cazul nostru, exist o diferen semnificativ fa de
Novell NetWare, unde server-ul este folosit doar pentru stocare de date, aplicaiile executndu-se pe
calculatorul pe care lucrai.
Lansnd aplicaia telnet, vei obine un prompt "login:" la care vei introduce numele de
identificare al utilizatorului (login name), i anume "linuxlab". Urmeaz apoi prompt-ul "Password: "
unde vei introduce parola "linux_lab" - fr ecou pe ecran (fr "", n ambele cazuri). Dac totul a fost
introdus corect, pe ecran va apare prompt-ul interpretorului de comenzi (shell):
linuxlab>[linuxlab]$

n Linux exist mai multe shell-uri (interpretoare de comenzi) disponibile: bash (Bourne
Again Shell), tcsh (C Shell), zsh, ksh (Korn Shell). Shell-ul folosit de noi este bash, care este i cel mai
utilizat.
n continuare vom prezenta mai multe comenzi i utilitare importante. n descrierea sintaxei
lor ceea ce este scris ntre [...] este opional, iar ceea ce este scris ntre <...> este obligatoriu.

2.2. Primele comenzi


2.2.1.

ls [<cale>] [opiuni] - afiarea coninutului unui director


S inspectm coninutul directorului curent:
linuxlab>[linuxlab]$ ls

care va afia:
Desktop
GNUstep
Xrootenv.0
linux-lab1.txt
new.xinitrc
nsmail
S ncercm acum o listare complet a coninutului directorului curent:
linuxlab>[linuxlab]$ ls -al
total 43
drwx------ 17 linuxlab users
drwxr-xr-x 6 root root
-rw-r--r-- 1 linuxlab users
-rw------- 1 linuxlab users
-rw-r--r-- 1 linuxlab users
-rw------- 1 linuxlab users
-rwxr-xr-x 1 linuxlab users
-rwxr-xr-x 1 linuxlab users
-rw-r--r-- 1 linuxlab users
-rw------- 1 linuxlab users
-rw-r--r-- 1 linuxlab users
-rw-r--r-- 1 linuxlab users
-rw-r--r-- 1 linuxlab users
drwx------ 3 linuxlab users
drwx------ 6 linuxlab users
drwxr-xr-x 2 linuxlab users
drwxr-xr-x 2 linuxlab users
drwx------ 2 linuxlab users
drwxr-xr-x 2 linuxlab users
drwxr-xr-x 3 linuxlab users
-rw-r--r-- 1 linuxlab users
drwxr-xr-x 2 linuxlab users
drwx------ 5 linuxlab users
-rw-r--r-- 1 linuxlab users
drwxr-xr-x 2 linuxlab users
drwxr-xr-x 2 linuxlab users
drwx------ 3 linuxlab users
drwxr-xr-x 5 linuxlab users
drwxr-xr-x 5 linuxlab users
-rw-r--r-- 1 linuxlab users
-rw-r--r-- 1 linuxlab users
drwx------ 2 linuxlab users

1024 Sep 9 12:28 .


1024 Sep 9 10:59 ..
963 Sep 9 11:32 .FVWM2-errors
0 Sep 9 11:26 .ICEauthority
0 Sep 9 12:26 .WindowMaker-errors
115 Sep 9 12:26 .Xauthority
188 Sep 9 11:26 .Xclients
1046 Sep 9 11:26 .Xclients-default
1422 Sep 9 10:59 .Xdefaults
104 Sep 9 12:25 .bash_history
24 Sep 9 10:59 .bash_logout
230 Sep 9 10:59 .bash_profile
124 Sep 9 10:59 .bashrc
2048 Sep 9 11:26 .enlightenment
1024 Sep 9 11:26 .gnome
1024 Sep 9 11:24 .gnome-desktop
1024 Sep 9 11:25 .gnome-help-browser
1024 Sep 9 11:24 .gnome_private
1024 Sep 9 12:26 .gnp
1024 Sep 9 10:59 .kde
966 Sep 9 10:59 .kderc
1024 Sep 9 12:22 .mc
1024 Sep 9 12:26 .netscape
12 Sep 9 12:26 .wm_style
1024 Sep 9 11:40 .wmakerconf
1024 Sep 9 12:26 .x11amp
1024 Sep 9 12:09 .xauth
1024 Sep 9 10:59 Desktop
1024 Sep 9 11:32 GNUstep
410 Sep 9 12:26 Xrootenv.0
5 Sep 9 11:29 new.xinitrc
1024 Sep 9 12:19 nsmail

Pentru a afla informaii despre sintaxa i semantica comenzii ls, ca de altfel a majoritii
comenzilor, tastai "man <comand>", n cazul nostru "man ls". Aceast comand va afia paginile de
manual pentru comand respectiv.
Fiind un sistem de operare multiuser, este normal s existe mecanisme de protecie a fiierelor.
Exist trei tipuri de drepturi de acces care se pot pune pe un fiier i trei categorii de utilizatori crora li
se adreseaz. Cele trei drepturi sunt: de citire (r), de scriere (w) i de execuie (x). Categoriile de
utilizatori crora li se aplic aceste drepturi sunt: utilizatorul care deine fiierul (fiecare fiier are un
proprietar), grupul din care acesta face parte i restul utilizatorilor. Grupurile de utilizatori folosesc la
mprirea utilizatorilor pe categorii, care au drepturi comune pe anumite fiiere. Un utilizator poate
face parte din mai multe grupuri.
S analizm n detaliu una din liniile ieirii comenzii "ls -l":
drwxr-xr-x 5 linuxlab users

1024 Sep 9 10:59 Desktop

drwxr-xr-x: primul caracter reprezint tipul fiierului (n cazul nostru d=fiier director; dac
era -, nsemn fiier obinuit). Mai sunt i alte tipuri, pe care le vom discuta mai trziu ; wxr: drepturile
celui care deine fiierul (are drept de scriere, de citire i de execuie), urmtoarele trei caractere: -xr
reprezint drepturile grupului din care face parte cel care deine fiierul (n cazul nostru, drept de
execuie i de citire, nu are drept de scriere), ultimele trei caractere reprezentnd drepturile celorlaltor
utilizatori (la fel ca ale grupului).
n Linux, fiierele executabile nu sunt recunoscute de sistem dup extensie, ci dup flag-ul "x"
- executabil. La crearea unui fiier de comenzi (analog cu fiierele .BAT din MS-DOS), pentru a-l putea
executa, trebuie s-i setai flag-ul "x" (cu comand "chmod"), cel puin pentru una din cele trei
categorii de utilizatori menionate mai sus.
5: numrul de blocuri alocate pentru fiier
linuxlab: deintorul fiierului (numele de login)
users: grupul care deine fiierul.
1024: dimensiunea fiierului (pentru un director, aceasta depinde de numrul intrrilor n
acesta)
Sep 9 10:59: data i ora crerii fiierului
Desktop: numele fiierului
n respectarea acestor drepturi se ntlnesc dou excepii: utilizatorul "root" - administratorul
de sistem - are drepturi depline asupra oricrui fiier, indiferent de drepturile setate. La fel se ntmpl
cu deintorul unui fiier, care are drepturi depline asupra acestuia.
Drepturile oricrui fiier se pot modifica cu comand "chmod". Schimbarea deintorului unui
fiier se face cu comand "chown". Pot s fac aceste lucruri: utilizatorul "root", deintorul fiierului,
toi cei care au drept de scriere asupra fiierului. Detalii despre aceste comenzi le putei obine cu "man
chmod", respectiv "man chown"
Pentru a filtra ieirea comenzii ls, precum i n multe operaii cu fiiere, este posibil folosirea
aa numitelor "wild cards", caractere care pot nlocui unul sau mai multe caractere. Acestea sunt:
"*" - nlocuiete un grup de caractere. Exemplu: "ls ap*" listeaz fiierele ale cror nume
ncep cu caracterele "ap"
"?" - nlocuiete un singur caracter.
"[...]" - Exemplu: "ls ap[a-f]m": va lista toate fiierele care au primele dou caractere ale
numelui "ap", urmtorul caracter poate fi orice ntre "a" i "f", inclusiv, i ultimul caracter "m".

2.2.2. cd [<cale>]
Aceast comand este echivalent cu cea din MS-DOS (change directory) - schimb directorul
curent. Spre deosebire de MS-DOS, cile n UNIX se construiesc folosind ca separator ntre directoare
caracterul "/". De exemplu, dac dorii s intrai n directorul Desktop, dai comand cd Desktop. Dac
dorii, de exemplu, s vedei ce fiiere exist n directorul "usr/doc" din rdcin, dai comand "cd
/usr/doc". Calea curent, n care v aflai, poate fi aflat cu comand "pwd".
!Atenie: Linux este un sistem de operare "case-sensitive", adic face diferena ntre minuscule i
majuscule. De pild, desktop este diferit de Desktop.
Fiecare utilizator are un director de baz, n care i ine fiierele personale, precum i alte
fiiere de configuraie personalizate (home directory). Exist cteva nume de directoare predefinite:

"~" reprezint home-directory-ul utilizatorului curent. Comand "cd ~" sau "cd" ne duce n
directorul "/home/linuxlab". Putem verifica acest lucru cu comand "pwd" (ne afieaz calea curent).
De exemplu, calea "~/Desktop" este interpretat, n cazul nostru, ca "/home/linuxlab/Desktop".
".." reprezint directorul printe. "cd .." (atenie, se las spaiu ntre "cd" i "..") ne duce cu un
nivel mai sus n ierarhia de directoare.
"." reprezint directorul curent "cd ." ne las n acelai loc, ns "." are o utilizare special:
cnd este dat o comand, shell-ul o caut doar n directoarele specificate de variabila sistem PATH.
Dac dorii s executai o comand care se afl n directorul curent (care nu este inclus n PATH),
tastai ./<comand>.

2.3. Sistemul de fiiere


Spre deosebire de alte sisteme de operare, Linux are un singur arbore de directoare. Acesta
poate fi mprit n mai multe pri situate pe partiii diferite sau chiar pe calculatoare diferite. Accesul
la aceste partiii se face prin "montarea" (mount) acestora n directoare ale arborelui unic. Montarea
este operaia de asociere a unei partiii sau a unui volum/director din reea cu un director al arborelui
unic. Acest lucru se realizeaz manual cu comand "mount". Demontarea lor se face cu comand
"umount". Pe lng sistemul propriu de fiiere, care se numete ext2, se pot monta i alte sisteme: vfat
(Windows 95), hpfs (OS/2), ntfs (Windows NT), nfs (Network File System - dezvoltat de SUN
Microsystems), smbfs (Windows Network), ncpfs (volume Novell). Ultimele patru sunt sisteme de
fiiere n reea.

2.3.1. Tipuri de fiiere i unde se gasesc fiierele importante din sistem


Fiierele pot fi de urmtoarele tipuri (indentificate dup primul caracter al irului de caractere
care precizeaz drepturile):
- fiiere obinuite
d directoare
l legtura (link) - Pentru a face economie de spaiu, exist posibilitatea ca, n cazul n care
prezena unui fiier este necesar n mai multe directoare, fiierul s se afle fizic ntr-un singur loc, iar
directoarele n care este nevoie de acesta s conin o lagtur spre acesta (apare ca un fiier obinuit),
la accesarea legturii fiind accesat de fapt fiierul cerut. Exist dou tipuri de legturi: hard - legura
apare ca un fiier cu aceleai atribute i dimensiune ca fiierul de care este legat - pentru crearea
acestui tip de legtur este necesar ca fiierul int s existe, i symbolic - legtura apare ca un fiier de
mici dimensiuni, care conine numele fiierului int. Sistemul face automat legtura cu acesta. Pentru
realizarea acestui tip de legtur nu este necesar ca fiierul int s existe. La apelarea unei legturi la
un fiier int inexistent, sistemul va genera un mesaj de eroare.
Pentru prezentarea urmtoarelor dou tipuri de fiiere, sunt necesare cteva explicaii:
n sistemele UNIX, accesul la dispozitivele de intrare/ieire, ca i la toate perifericele, i nu
numai (memorie CMOS, ceas etc.) se face prin intermediul unor fiiere speciale, aflate de obicei n
directorul /dev. De exemplu, /dev/hda1 reprezint partiia 1 a primului hard disk. /dev/fd0 reprezint
prima unitate de floppy-disk. Dac incercai, de exemplu, s citii fiierul dev/fd0, vei vedea de fapt
coninutul dischetei din prima unitate de floppy-disk, ncepnd de la prima pist, primul sector, octet cu
octet. Alte exemple de fiiere /dev/ttySx, unde x=0,1,2,3....., reprezentnd porturile seriale, /dev/cdrom,
/dev/mouse. Vei vedea c directorul /dev conine foarte multe asemenea fiiere, ns nu toate sunt
efectiv folosite. Dac ncercai accesul la un astfel de fiiere care reprezint un dispozitiv care nu exist
n sistem, se va genera un mesaj de eroare.
Exist dou tipuri de fiiere "device" (dispozitiv):
b transferul se face pe blocuri de octei (/dev/hda, /dev/cdrom etc.)
c transferul se face la nivel de caracter.(/dev/ttyx, x=0,1,... - terminale)
Spre deosebire de MS-DOS/Windows, Linux, fiierele sunt grupate n directoare dup tipul
lor. Exist cteva directoare specifice:
/bin, /usr/bin - executabile
/sbin, /usr/sbin - programe executabile folosite n administrarea sistemului
/lib, /usr/lib - biblioteci - spuneam mai devreme c n Linux se folosesc biblioteci comune de funcii, a
cror legare de programul executabil se face dinamic
/dev - dispozitive I/O, periferice
/etc - fiiere de configurare, script-uri diverse, inclusiv pentru iniializarea/oprirea sistemului
/usr/man - paginile de manual
/proc - director virtual, nu exist pe disc, creat de nucleu (kernel), conine informaii despre procese,
starea sistemului etc.

/var - fiiere care se pot modifica (de exemplu, fiiere de tip jurnal (log))
/root - directorul de baz pentru utilizatorul "root"
/home - conine cte un director pentru fiecare utilizator - fiiere personale. n cazul nostru, "home
directory" este /home/linuxlab
/tmp, /var/tmp, /usr/tmp - fiiere temporare.

2.3.2. Alte comenzi de gestiunea fiierelor


cp [opiuni] <fiier_surs> <destinaie> - copiaz fiiere i directoare
mv [opiuni] <fiier_surs> <destinaie> - redenumete <destinaie>, dndu-i numele
<fiier_surs>
mv [opiuni] <fiiere_surs> <director> - mut <fiiere_surs> n <director>
ln [opiuni] <fiier_tinta> [<nume_legatura>] - creaza o legatura cu numele
nume_legatura, dac este furnizat (dac nu, legatura are acelasi nume ca si fiierul tinta)
ln [opiuni] <fiiere_tinta> <director> - creeaza in <director> legturi la <fiiere_tinta>, cu
aceleai nume. "ln" creaz legturi hard (in mod implicit). Pentru crearea de legturi simbolice, se
folosete opiunea "-s"
rm <fiier> [opiuni] - terge fiiere. Se pot folosi "wild cards":"*", "?", "[..]". Una din cele
mai importante opiuni ale comenzii "rm" este "-i", care generaza o ntrebare de confirmare pentru
fiecare fiier sters. Alte opiuni pot fi aflate cu comand "man rm".
!Atenie: multe din comenzile Linux, comenzi care pot produce modificri importante i iremediabile
in sistem se executa in mod silentios, fr a genera vreun mesaj i fr a cere o confirmare a actiunii.
rmdir [opiuni] <director> - terge un director, dac acesta este gol.
cat [opiuni] [<fiier>] - afieaz coninutul unui fiier. De fapt, aceasta comand, fr nici un
argument, copiaza ceea ce primete de la intrarea standard (in mod normal, consola) la ieirea standard
(in mod normal, tot consola). Dac primete ca argument un fiier, "cat" va considera acest fiier ca
intrare, ieirea fiind cea standard.

2.4. Comenzi diverse


2.4.1. Aflarea unor informaii diverse despre sistem.
date - afieaz data i ora curent
who - informaii despre ceilali utilizatori conectai la sistem
who am i - informaii despre utilizatorul de la terminalul curent
df - informaii despre diversele sisteme de fiiere ale sistemului

2.4.2. Cutarea fiierelor


find [<cale_fiier>] [<expresie>] - caut fiiere ntr-un arbore de directoare. La aceast
comand se pot folosi "wild-cards".
grep [opiuni] <fiiere...> - caut n <fiiere...> i afieaz liniile care respect anumite
condiii.
Detalii despre aceste comenzi pot fi aflate cu "man find", respectiv "man grep"

2.5. Despre terminale


Un sistem UNIX este format din calculatorul central i mai multe terminale.
Terminalele pot fi reale sau virtuale. De exemplu, pe calculatorul pe care este instalat sistemul Linux,
exist 6 terminale virtuale (selectabile cu tastele Alt+F1..F6). Orice alt calculator conectat fizic la
sistemul Linux poate deveni terminal pentru acesta folosind un program adecvat care folosete
protocolul telnet. ntruct exist multe tipuri de terminale (prin tipuri nelegem semnificaii diferite ale
caracterelor de control i chiar a caracterelor obinuite - de exemplu, unele teminale pot sa nu

foloseasc caracterele cu codul ASCII mai mare de 127), este necesar ca programele s tie parametrii
fiecrui tip de terminal. Acest lucru se realizeaz printr-un fiier corespunztor fiecrui terminal, cu
date despre acesta, coninut ntr-o baz de date a terminalelor, terminfo. Identificarea terminalului se
face prin variabila de sistem TERM (Exemple de terminale: vt100, vt 102, Linux, x-term). Setarea
variabilei TERM cu alt valoare dect cea a tipului de terminal (sau a emulrii de terminal) utilizat
poate duce la o comportare imprevizibil a terminalului. De asemenea, unele terminale au mai multe
posibiliti dect altele (De exemplu, nu toate terminalele au tastele F1-F12, sau altele au doar F1-F10
etc. Aceste taste sunt cteodat asignate altor taste - de ex. pe numpad)
!Atenie! Tipul terminalului, n cazul celor aflate la distan, nu este dat de calculatorul pe care
se lucreaz, ci de soft-ul care face emularea de terminal.

2.6. Variabile sistem


Exist cteva variabile importante pentru sistem. Afiarea lor se face cu comanda "set" (putei
folosi i "set |less" pentru paginarea afirii). Setarea unei variabile se face la prompt-ul shell-ului cu
comanda "<Nume_variabil>=<Valoare>". <Valoare> nu nseamn ceva numeric, poate fi i un text,
scris fr "". Se pot aduga i alte variabile la cele afiate de "set". Pentru a terge o variabil sistem, se
folosete comanda "unset <Nume_variabil>"
Informaii despre variabilele importante pentru shell, precum i ale informaii despre acesta
pot fi aflate cu comanda "man bash".
Exemplu (n dreptul celor mai importante am adugat un comentariu):
BASH=/bin/bash # calea unde se afl interpretorul de comenzi
BASH_ENV=/home/linuxlab/.bashrc #unul din fiierele de configuraie ale shell-ului
BASH_VERSION=1.14.7(1) # versiunea interpretorului de comenzi
BROWSER=/usr/bin/netscape # browser-ul de web implicit
DISPLAY=:0
EUID=502
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/home/linuxlab # directorul de baz (home directory) al utilizatorului
HOSTNAME=localhost.localdomain # numele calculatorului
HOSTTYPE=i386 # tipul calculatorului (nu nseamn tipul procesorului, ci familia de procesoare)
KDEDIR=/usr
LOGNAME=linuxlab #numele de login al utilizatorului curent
MAIL=/var/spool/mail/linuxlab
OPTERR=1
OPTIND=1
OSTYPE=Linux # tipul sistemului de operare
PATH=/usr/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/linuxlab/bin:/home/linuxlab/Office51/
bin # cile unde sunt cutate programele executabile
PPID=551
PS1=\u>[\W]\$ #structura prompt-ului
PS4=+
PWD=/home/linuxlab # calea curent
SHELL=/bin/bash
SHLVL=4
TERM=linux #tipul terminalului
UID=502
USER=linuxlab #utilizatorul
USERNAME=
WRASTER_COLOR_RESOLUTION0=4
_=/etc/bashrc

2.7. Informaii despre procesele rulate n sistem


ps [<opiuni>] - fr nici un parametru - afieaz procesele care sunt rulate de utilizatorul
curent
497 tty1
509 tty1

PID TTY
TIME CMD
00:00:00 bash
00:00:00 startx

516 tty1
520 tty1
537 tty1
547 tty1
551 tty1
560 tty1
561 tty1
627 tty1
682 tty1

00:00:00 xinit
00:00:09 wmaker
00:00:06 netscape-commun
00:00:00 netscape-commun
00:00:09 gnp
00:00:01 gnome-terminal
00:00:00 gnome-pty-helpe
00:00:00 gtcd
00:00:00 ps

ps -a - afieaz toate procesele rulate n sistem


PID TTY
TIME CMD
1?
00:00:03 init
2?
00:00:00 kflushd
3?
00:00:00 kpiod
4?
00:00:00 kswapd
5?
00:00:00 mdrecoveryd
106 ?
00:00:00 apmd
259 ?
00:00:00 portmap
306 ?
00:00:00 syslogd
317 ?
00:00:00 klogd
331 ?
00:00:00 atd
345 ?
00:00:00 crond
358 ?
00:00:00 cardmgr
372 ?
00:00:00 inetd
394 ?
00:00:00 lpd
423 ?
00:00:00 gpm
445 ?
00:00:00 xfs
450 ?
00:00:00 xfstt
489 tty1 00:00:00 login
490 tty2 00:00:00 mingetty
491 tty3 00:00:00 mingetty
492 tty4 00:00:00 mingetty
493 tty5 00:00:00 mingetty
494 tty6 00:00:00 mingetty
496 ?
00:00:00 update
497 tty1 00:00:00 bash
509 tty1 00:00:00 startx
516 tty1 00:00:00 xinit
517 ?
00:00:54 X
520 tty1 00:00:09 wmaker
532 ?
00:00:01 xfstt
537 tty1 00:00:06 netscape-commun
547 tty1 00:00:00 netscape-commun
551 tty1 00:00:09 gnp
560 tty1 00:00:01 gnome-terminal
561 tty1 00:00:00 gnome-pty-helpe
562 pts/0 00:00:00 bash
627 tty1 00:00:00 gtcd
683 tty1 00:00:00 ps
PID - numrul de identificare al procesului - la pornirea unui proces, acestuia i este asignat un numr.
TTY - terminalul de la care a fost pornit procesul. "?" - procesul nu a fost pornit de la nici un terminal,
ci de un alt proces.
Orice comand poate fi rulat n background (n fundal) punnd caracterul "&" dup numele
comenzii, la apelarea ei din shell.

Ex: comanda "sleep <numr>" ntrzie afiarea prompt-ului sistem cu un <numr> de


secunde. Aceast comand este rulat n foreground - shell-ul nu poate primi alte comenzi pn la
terminarea ei. (ncercai, de exemplu, "sleep 10"). S rulm aceast comand n background:
sleep 1000 &
[1] 704
704 - numrul de identificare (PID) al procesului lansat. Acest lucru se observ cu comanda
"ps -A":
PID TTY
TIME CMD
.............
.............
704 pts/0 00:00:00 sleep
705 tty1 00:00:00 ps
Pentru a termina un proces care ruleaz, se folosete comanda "kill PID", unde PID este
numrul de identificare al procesului ce se dorete terminat, aflat cu comanda "ps". Dac se ncearc
terminarea unui proces care nu a fost startat de utilizatorul curent, comanda va genera un mesaj de
eroare ("not owner").

2.8. Manipularea proceselor i semnalelor la nivel de shell


Un proces UNIX reprezint execuia unui program sau a unei serii de programe. Un proces
poate fi lansat printr-o comand de la un terminal, sau un proces activ poate lansa un alt proces.
Procesul lansat n execuie de ctre alt proces se numete proces fiu, n timp ce procesul care l-a lansat
se numete proces tat. La execuia unei comenzi, se genereaz un proces fiu al shell-ului. Aceast
generare nu este realizat direct, ci printr-o cerere adresat procesului kernel. n general, un proces
printe va cere procesului kernel s genereze un nou proces fiu. Acest tip de apel se numete fork. Noul
proces creat execut acelai program ca procesul printe. Procesul fiu motenete toate fiierele
deschise de procesul printe, dar i alte caracteristici. Cele dou procese au ns identificatori de
proces - PID-uri diferite. Codul ntors de mecanismul fork procesului printe are o valoare diferit de 0,
reprezentnd PID-ul noului proces, iar cel ntors fiului are valoarea 0. Pentru a executa totui un alt
program, este folosit facilitatea exec, care permite ncrcarea i executarea unui program de ctre un
proces deja generat, n locul acestuia. Cazul tipic este cel al operaiei compuse fork-exec.
Pentru execuia simultan a mai multor procese se folosete time-sharing: fiecare proces are o
cuant de timp n care ruleaz, dup care execuia se mut la alt proces. Procesele care ruleaz
comunic ntre ele prin semnale. Semnalul este un tip special de mesaj care poate fi trimis de la un
proces la altul sau de la procesul kernel la alte procese. Kernel-ul este procesul UNIX care rmne
permanent n memorie. Pentru a transmite aceste semnale (15 semnale standard) ctre procese se
utilizeaz comanda:
kill -x PID1 PID2...
unde x este numrul semnalului.
Semnale
1) SIGHUP
2) SIGINT
3) SIGQUIT
4) SIGILL
5) SIGTRAP
6) SIGIOT
7) SIGBUS
8) SIGFPE
9) SIGKILL
10) SIGUSR1
11) SIGSEGV
12) SIGUSR2
13) SIGPIPE
14) SIGALRM
15) SIGTERM

"agare" proces
ntrerupere
ieire din proces
instruciune ilegal
execuie pas cu pas a procesului
instruciune de I/O, ntrerupere
eroare magistral
excepie de virgul mobil
omorre proces
definit de utilizator
violare segmentare
definit de utilizator
scriere n pipe
alarmare ceas de gard
terminare proces

Un semnal poate produce asupra procesului destinaie unul din cele trei efecte:
- poate rezulta o aciune implicit a sistemului de operare. Aceast aciune va determina terminarea
procesului destinaie.
- semnalul poate fi capturat de ctre procesul destinaie, rezultnd execuia unei rutine specificat
anterior de acel proces. n acest caz, semnalul este considerat ca un tip special de ntrerupere software,
rutina actionnd ca rutina de tratare a ntreruperii.
- semnalul poate fi ignorat. Procesul destinaie nu ii va modifica n nici un fel comportarea dup
primirea semnalului.

2.9. Operaii de intrare/ieire, redirectri, pipe i filtre


Fiecare proces care se execut sub Linux are o surs de la care primete intrrile i o destinaie
a mesajelor de eroare sau a rezultatelor. Sub Linux sunt identificate urmtoarele dispozitive standard de
I/O:
stdin - dispozitiv standard de intrare, consol
stdout - dispozitiv standard de ieire, consol sau imprimant
stderr - dispozitiv standard de ieire erori.
Dac ai rulat comenzi precum "cat" sau "ls" i ai studiat paginile lor de manual, probabil ca
ai observat c nu exist nici o opiune la aceste comenzi de a "pagina" ieirea, astfel nct aceast
ieire s apar pe ecran pagin cu pagin. n Linux, nici nu este nevoie ca astfel de comenzi s fie
ncrcate cu aceste opiuni. Exist un mecanism mult mai general: pipe-uri (conducte) prin care ieirea
unei comenzi este legat la intrarea altei comenzi. Acest mecanism este prezent n nucleul sistemului,
fiind unul din mijloacele de comunicare ntre procese (este half-duplex - comunicarea se face doar ntrun singur sens). Pipe-urile pot fi folosite ns i la nivel de shell, prin utilizarea caracterului "|".
Exemplu:
ls -l | more
n care ieirea comenzii ls este conectat la intrarea programului "more", care afieaz ceea ce primete
la intrare pn cand ecranul se umple, dup care ateapt apsarea unei taste pentru a continua. Mai
performant este paginatorul "less" care permite un scroll (defilare) a textului sus/jos, linie cu linie sau
pagin cu pagin. (Ex.: "ls -l |less")
Acest mecanism este larg utilizat n Linux, nu numai la afiri, ci la tot ce nseamn prelucrri
de date care folosesc mai multe programe (filtre), n scopul eliminrii folosirii fiierelor temporale.
Ieirea i intrarea standard pot fi redirectate ctre fiiere folosind urmtoarea sintax:
<comand> > <fiier> - redirectare ieire
<comand> >> <fiier> - apendare la sfarsitul fiierului
<comand> < <fiier> - redirectare intrare
<comand> << <cheie> - intrarea standard este luat din shell

2.10. Editarea unui fiier - editorul "vi"


Editorul "vi" este unul dintre cele mai vechi, i totui unul dintre cele mai folosite editoare de
text sub Linux (i UNIX n general). Chiar dac este depit de alte editoare, ca Emacs sau Joe,
cunoaterea lui este necesar pentru c este de obicei singurul disponibil pe dischetele de boot cu care
se repar un sistem Linux. "vi" este un editor destul de diferit de ceea ce nelegem azi prin editor de
text, fiind i foarte complex.
Apelare: vi [opiuni] [<fiier>]. Apelat fr nici un argument, va edita un fiier nou. La
pornire, vi se afl n mod comand. n acest mod, tot ceea ce este tiprit este interpretat drept comand.
Comenzi importante:
:q! - prsete fiierul vi fr a salva documentul
:x - salveaz fiierul i prsete editorul
:w [<nume fiier>]- salveaz fiierul editat, cu numele specificat. Dac nu e specificat numele,
l salveaz cu vechiul nume.
:help [<subiect>]- invoc manualul on-line. Subiectele se pot gsi pe prima pagin (comanda
":help")
a - apendare text la poziia curent
i - inserare text la poziia curent. Nu vei putea terge n acest mod dect caracterele introduse
de cnd ai intrat n acest mod.

A - apendare la sfrit de linie


I - inserare nainte de primul caracter non-blank din linia curent
rx - nlocuiete un caracter x la poziia curent
R - nlocuiete caractere multiple, ncepnd de la caracterul din poziia curent
ESC - termin comand curent
:w [<fiier>] - scrie textul n fiierul specificat. Dac nu e specificat nici un fiier, scrierea se
face n fiierul curent.
:r <fiier> - insereaz coninutul unui fiier la poziia curent.
tergerea altor caractere dect cele inserate n modul "insert" se face cu comanda "d[<arg>]

2.11. Aplicaii de reea


n continuare, ne vom referi la cteva aplicaii de reea. Dei Linux suport mai multe
protocoale (IPX, AppleTalk etc.), n continuare ne vom referi la reele TCP/IP, de departe cele mai
rspndite protocoale n lumea UNIX (Internet-ul este o reea TCP/IP). Pentru aceasta, explicm
noiunile de client i server: server-ul este un program care poate accesa anumite resurse ale
calculatorului pe care ruleaz i pe care le poate pune la dispoziie. Mai mult dect att, server-ul poate
rspunde la diverse cereri, efectua anumite prelucrri de date. Clientul este programul care are nevoie
de aceste resurse, pentru aceasta fiind nevoit s iniieze o conexiune ctre server i s formuleze nite
cereri, acceptate de acesta. De cele mai multe ori, server-ele i pun la dispoziia clientilor resursele n
mod preferenial, astfel nct este necesar o identificare a clientului de ctre server. Modul uzual de a
realiza acest lucru este printr-un nume i o parol. Deci prin server nu ne referim la un calculator, ci la
un program. De multe ori, calculatorul care ruleaz programul server este denumit tot server. n cele ce
urmeaz, programele folosite de noi sunt programe client, care acceseaz un server identificat prin
<adres>, care poate fi un nume de calculator (Ex: www.yahoo.com, kmic.elia.pub.ro etc) sau o adres
IP (Ex: 141.85.53.100 etc).
ping <adres> - trimite ctre server pachete IP, verificnd dac acestea se ntorc napoi. Prin
aceast comand se verific faptul c server-ul funcioneaz i poate realiza o conexiune. Aceast
comand ne d informaii i asupra timpului n care sunt trimise pachetele.
/usr/sbin/traceroute <adres> - urmrete drumul unui pachet IP pn la server
ftp [<adres>] - program client pentru tranfer de fiiere cu server-ul identificat prin <adres>.
Pentru a putea face transfer de fiiere, este necesar s v identificai cu un nume de login i o parol pe
server. Multe din server-ele ftp publice accept ca nume de login "anonymous" sau "ftp", iar ca parol,
adresa voastr de e-mail. Dup realizarea unei conexiuni, avei la dispoziie mai multe comenzi: get
<nume_fiier> - download (transfer server->client), put <nume_fiier> - upload (client->server), mget,
mput - la fel ca get, resp put, dar se pot folosi "wild-cards", cd - change dir. lcd - local change dir
(schimb directorul pe calculatorul client), ls (se poate i "ls -l" sau "ls -l | less" - afieaz coninutul
directorului curent de pe server, pwd - afieaz calea curent de pe server.
telnet [<adres>] - realizeaz o conexiune de terminal virtual pe server-ul identificat prin
<adres>. Pentru a putea folosi aceast comand, este necesar s fii nregistrai pe acest calculator (s
avei un nume de login i o parol).
Pentru ultimele dou comenzi, calculatorul apelat poate s refuze conexiunea. Acest lucru se
poate ntmpla din dou motive: calculatorul apelat este configurat s refuze aceste cereri sau nu deine
un program server care s deserveasc aceste cereri. De exemplu (cea mai des ntlnit situaie), poate
s existe server de ftp, dar nu de telnet (n special pentru sisteme bazate pe Windows).
lynx [<adres>] - browser de Web n mod text - folosete protocolul http.
Date suplimentare despre aceste comenzi pot fi obinute cu "man <comand>"

2.12. Unde gsim alte informaii ?


Cea mai bun surs de informaie despre sistemul Linux o reprezint chiar documentaia vast
inclus n sistem. Aceasta se compune din:
- paginile de manual - accesate cu comanda "man <comand>". Aceste pagini sunt grupate pe
seciuni. Paginile de manual sunt localizate n directorul /usr/man. Mai exist o comand, "apropos

<termen>", care caut n paginile de manual cuvntul <termen> i afieaz toate comenzile ale cror
pagini de manual conin acest termen.
- utilitarul texinfo - apelat cu comanda "info <comand>" - este un sistem care seamn mai
mult cu sistemele de help moderne. Informaia este ierarhizat. Pentru multe comenzi exist i pagini
de manual, i fiiere pentru texinfo. n principiu, n pagina de manual corespunztoare este menionat
faptul c documentaia texinfo este mai complet i mai actual (de exemplu, tot ceea ce ine de
compilatorul de C)
- alte documentaii din directorul /usr/doc. Foarte utile sunt documentaiile din directorul
/usr/doc/HOWTO. Fiierele din acest director sunt de fapt nite ghiduri pentru realizarea unor lucruri
specifice (de exemplu, dac dorii s stii cum se poate realiza o intergrare ntre Linux i retelele
Novell, citii IPX-HOWTO; dac dorii s instalai o plac de sunet, citii Sound-HOWTO; dac dorii
s configurai partea de reea, citii Ethernet-HOWTO, NET-3-HOWTO; pentru configurarea modemului i conectarea la un ISP (Internet Service Provider), citii PPP-HOWTO, Serial-HOWTO etc.)
- manualele din cadrul LDP (Linux Documentation Project) - directorul /usr/doc/LDP:
"Linux Installation and Getting Started Guide",
"Linux Network Administrators Guide"
"Linux System Administrators Guide"
"Linux Programmer's Guide"
Aceste manuale sunt n format html, ele putnd fi citite cu lynx sau netscape. Versiuni n alte
formate pot fi obinute de pe Internet (sunsite.unc.edu/pub/ Linux/docs/LDP/)

3. ntrebri i aplicaii
3.1. Afiai coninutul arborelui de directoare (toate fiierele i toate directoarele). Creai un fiier care
conine aceste nume. Modificai drepturile acestui fiier astfel nct s nu poat fi accesat (citit) de toi
utilizatorii, ci doar de utilizatorul curent i de cei care fac parte din grupul users. De asemenea, dai
drept de scriere pentru membrii grupului users.
3.2. Ce alte modaliti mai sunt de a scrie un text ntr-un fiier, n afar de vi ?
3.3. Creai un fiier executabil care s furnizeze coninutul directorului curent, procesele care sunt
rulate n sistem precum i informaii despre utilizatorii conectai. Cu ajutorul acestui fiier, creai alt
fiier care s conin toate aceste informaii.
3.4. Creai un director, cu numele linkxx, unde nlocuii xx prin 2 cifre arbitrare, asftel nct numele
directorului s fie unic i creai n el dou legturi simbolice la cele dou fiiere create la punctele 3.1.
i 3.3.

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