Sunteți pe pagina 1din 14

SISTEME DE OPERARE

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

Opțiuni pentru comanda ps:


Opțiune Descriere
-e Afișează toate procesele din sistem, nu doar
pe cele din terminalul curent
-f Afișează mai multe detalii despre procese
-a Afișează toate procesele asociate
terminalului
-ef Afișează toate procesele aflate în curs de
execuție
-C Caută un anumit proces după denumire
-u Caută un anumit proces după numele de
utilizator

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

 Să se afișeze mai multe detalii despre toate procesele din sistem:


ps –e -f

 Să se afișeze toate procesele asociate terminalului:


ps –a

Otilia PETCU
Pagina 2
 Să se afișeze toate procesele aflate în curs de execuție:
ps –ef

 Să se caute procesul „systemd”:


ps –C systemd

 Să se afișeze toate procesele root-ului:


ps –u root

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

1.4. Comanda htop


Comanda htop în sistemul Linux reprezintă un utilitar de linie de comandă care permite
utilizatorului să monitorizeze interactiv resursele vitale ale sistemului sau procesele serverului
în timp real. Acesta acceptă operarea mouse-ului, oferă indicații vizuale despre utilizarea
procesorului și memoriei, afișează linii de comandă complete pentru procese și permite
derularea atât pe verticală, cât și pe orizontală pentru procese și linii de comandă.

Otilia PETCU
Pagina 5
Exemplu:
htop

1.5. Comanda jobs


Comanda jobs este utilizată pentru a putea afișa job-urile executate în foreground sau
background.
Exemplu:
jobs

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:

Se execută comenzile awk din blocul de start

Se citește o înregistrare din fluxul de intrare

Se execută comenzile awk asupra unei


înregistrări

Se repetă dacă nu este sfârșitul fișierului

Se execută comenzile awk din blocul de sfârșit

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"}'

 Să se afișeze toate înregistrările din fișierul „employee.txt” utilizând comanda awk:


awk ‘{print}’ employee.txt

 Să se copieze conținutul fișierului „employee.txt” în fișierul „new_employee.txt”


utilizând comanda awk:
awk ‘{print}’ employee.txt > new_employee.txt

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

 Să se afișeze doar înregistrările de pe coloanele 1 și 4 din fișierul „employee.txt”


utilizând comanda awk:
awk '{print $1,$4}' employee.txt

Observație! $0 reprezintă o înregistrare întreagă.


 Să se afișeze toate înregistrările alături de numărul liniei din fișierul „employee.txt”
utilizând comanda awk:
awk '{print NR,$0}' 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

 Să se afișeze prima coloană din fișierul „marks.txt”:


awk –F, ‘{print $1}’ marks.txt

 Să se citească instrucțiunile awk dintr-un fișier program:


awk –F, -f command marks.txt

awk -f display 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

 Să se scrie o funcție care să apeleze o altă funcție:


#!/bin/bash

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

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