Documente Academic
Documente Profesional
Documente Cultură
LABORATOR 4
Topicuri:
1. Comenzi pentru gestionarea
proceselor:
a. Comanda ps
b. Comanda nice și renice
c. Comanda top
d. Comanda htop
e. Comanda jobs
f. Comanda fg
g. Comanda bg
2. Awk
3. Funcții shell
1. Comenzi pentru gestionarea proceselor
1.1. Comanda ps
Comanda ps oferă informații despre procesele active din shell-ul curent.
Exemplu:
Să se afișeze procesele active din shell-ul curent:
ps
Câmp Descriere
PID ID-ul procesului
TTY Tipul terminalului asociat procesului
TIME Durata procesului
CMD Comanda care a început acest proces
Exemple:
Să se afișeze toate procesele din sistem:
ps -e
Otilia PETCU
Pagina 1
Să se afișeze mai multe detalii despre procesele din terminalul curent:
ps -f
Otilia PETCU
Pagina 2
Să se afișeze toate procesele aflate în curs de execuție:
ps –ef
Otilia PETCU
Pagina 3
1.2. Comanda nice și renice
Comanda nice ajută la execuția unui proces/program cu o anumită prioritate definită de
utilizator. Prioriatea este reprezentată de un număr; un număr mic reprezentând o prioritate
mare. Se pot lansa procese cu prioriate negativă.
Procesele lansate cu ajutorul comenzii nice sunt procese care necesită un timp
îndelungat de execuție, astfel acestea se lansează în background. Pentru a putea schimba
prioritatea unui proces aflat în execuție se utilizează comanda renice.
Opțiune Descriere
-el Verifică prioriatea unui proces
Exemplu:
1.3.Comanda top
Comanda top este utilizată pentru a putea vizualiza procesele Linux. Aceasta oferă o
vizualizare dinamică în timp real a sistemului care ruleză. După rularea comenzii top se va
deschide un mod de comandă interactiv împărțit astfel:
- Jumătate superioară conține statisticile proceselor și a utilizării resurselor;
- Jumătatea inferioară conține o listă a proceselor care rulează în prezent.
Otilia PETCU
Pagina 4
Exemplu:
top
Câmp Descriere
PID ID-ul procesului
USER Numele de utilizator
PR Prioritatea procesului (cu cât numărul este
mai mic, cu atât este mai mare prioritatea)
NI Valoarea nice (o valoare negativă indică o
prioritate mai mare, în timp ce o valoare
pozitivă reprezintă o prioritate mai mică)
VIRT Memoria virtuală totală utilizată
RES Câtă memorie RAM fizică folosește
procesul, măsurată în kilobytes
SHR Dimensiunea memoriei partajate (kb)
%CPU Utilizarea procesorului
%MEM Utilizarea memoriei
TIME+ Timpul
COMMAND Denumirea comenzii care a pornit procesul
Otilia PETCU
Pagina 5
Exemplu:
htop
1.6. Comanda fg
Comanda fg reprezintă o comandă de control cu ajutorul căreia un proces care rulează în
background poate fi relansat în foreground.
Exemplu:
fg 1
Otilia PETCU
Pagina 6
1.7.Comanda bg
Comanda bg reprezintă o comandă de control cu ajutorul căreia se reia un proces suspendat,
menținându-l să ruleze în background.
Exemplu:
bg %1
2. AWK
Awk reprezintă un limbaj de scripting utilizat pentru manipularea datelor și generarea de
rapoarte, fiind folosit în principal pentru scanarea și procesarea modelelor.
Workflow:
Otilia PETCU
Pagina 7
Forma generală:
awk opțiuni ‘criteriu_selectare {acțiune}’ fișier_intrare > fișier_ieșire
Opțiune Descriere
-f fișier Citește programul sursă awk dintr-un fișier
-F separator Specifică un separator diferit de spațiu sau
tab
VariabilăDescriere
NR Numărul înregistrării curente
NF Numărul de câmpuri din înregistrarea curentă
FS Separatorul câmpului de intrare - are valoarea
implicită spațiu
RS Separatorul înregistrărilor de intrare - are
valoarea implicită un rând nou
OFS Separatorul câmpului de ieșire - are valoarea
implicită spațiu
ORS Separatorul înregistrărilor de ieșire - are
valoarea implicită un rând nou
Exemple:
Să se afișeze mesajul „Welcome” utilizând comanda awk:
awk '{print "Welcome"}'
Otilia PETCU
Pagina 8
Să se afișeze doar înregistrările care conțin patternul „manager” din fișierul
„employee.txt” utilizând comanda awk:
awk '/manager/ {print}' employee.txt
Otilia PETCU
Pagina 9
Să se afișeze înregistrările 3-6 din fișierul „employee.txt”, utilizând comanda awk:
awk 'NR==3, NR==6 {print NR,$0}' employee.txt
Otilia PETCU
Pagina 10
3. Funcții shell
Funcțiile shell sunt definite de utilizator pentru a putea permite modularizarea programelor.
Acestea permit împărțirea funcționalității generale a unui script în subsecțiuni mai mici, logice,
care pot fi apelate pentru a îndeplini sarcini individuale de fiecare dată când este necesar. Astfel,
utilizarea funcțiilor pentru a efectua sarcini repetitive este o modalitate bună de reutilizare a
codului, reprezentând o parte importantă a principiilor de programare.
Forma generală:
denumire_funcție () {
#lista de comenzi
}
Exemple:
Să se scrie o funcție care afișează mesajul „Hello friends”:
#!/bin/bash
Hello() {
echo "Hello friends"
}
Hello
Otilia PETCU
Pagina 11
Să se scrie o funcție care afișează modulul unui număr:
#!/bin/bash
abs () {
if [ $1 -ge 0 ]
then
echo "Modulul numarului $1 este: $1"
else
x=$((-$1))
echo "Modulul numarului $1 este: $x"
fi
}
#abs 2
#abs -2
f_one () {
echo "Prima functie!"
}
f_two () {
echo "A doua functie!"
f_one
}
f_two
Otilia PETCU
Pagina 12
Să se scrie o funcție recursivă care calculează factorialul unui număr:
#!/bin/bash
factorial () {
if [ $1 -le 1 ]
then
echo 1
else
last=$(factorial $[$1-1])
echo $(($1 * last))
fi
}
factorial 6
Otilia PETCU
Pagina 13