Sunteți pe pagina 1din 33

Lab4

Comenzi de lucru cu memoria


vmstat
Monitorizeaza memoria virtuala
vmstat s
vmstat 1 100
Explicatia pe slide-ul urmator

Comenzi de lucru cu memoria


vmstat
Procs
r : procese runnable
B : procese blocate

Memory
Swpd : Spatiu swap folosit
Free: RAM liber
Buff : RAM folosit pentru
buffer
Cache : RAM filesystem
cache

Swap
Si : swapped de pe disc /sec
So : swapped pe disc /sec

IO:
Bi : Blocks primite de pe disc
Bo : Blocks scrise pe disc

System
In: Intreruperi /sec
Cs: schimbari de context /sec

CPU
Us : timp de rulare user code.
(non-kernel code)
Sy : timp de rulare kernel
code
Id: Idle time
Wa: Timp in asteptare IO

Comenzi de lucru cu memoria


free
afiseaza memoria libera si cea ocupata
buffers = RAM folosit pentru stocarea de date
temporare preluate din I/O (ex: HDD, retea .)
swap = memorie virtuala extensie in memoria
secundara a memoriei principale

Comenzi de lucru cu memoria


free
free mt
Afisaza memoria in MB si un total

free ms 5
Afisaza un nou tabel odata la 5 secunde

Comenzi de lucru cu memoria


cat /proc/meminfo
Afisaza continutul fisierului meminfo

Comenzi de lucru cu memoria


cat /proc/cpuinfo
Afisaza continutul fisierului meminfo

Comenzi de lucru cu memoria


w
Afisaza date despre processor
JCPU timpul folosit pe procesor de procesele
lansate din terminalul curent
PCPU timpul folosit de procesul curent

Comenzi de lucru cu memoria


pmap
Examineaza harta memoriei si bibliotecile
RSS: resident set size - paginile incarcate in
memoria principala (RAM)
PSS proportional set size - RAM incluzand si
paginile in comun
Dirty: memorie ce nu va fi pusa in comun

Comenzi de lucru cu memoria

Comenzi utile
arch
afisaza arhitectura
sistemului

df
spatiul folosit

du
Spatiul ocupat de
fisier / director
du b /etc

lspci
afisaza pci

strace
Afisaza accesarile
strace bash ->exit

uname
Afisaza informatii
sistem
uname -a

Comenzi de lucru cu memoria


pidstat
pidstat -r
O eroare de paginare apare cand un proces acceseaza o
pagina ce nu se gaseste in memoria
major fault - se cere acces la disc. Kernel-ul va cauta
mai intai in cache si RAM
minor fault alocare de paginare.
VSZ - Virtual Memory Size memoria accesata de process
incluzand memoria virtuala si cea alocata bibliotecilor
comune

Comenzi de lucru cu memoria

Compilare
GNU Compiler Collection = gcc

http://gcc.gnu.org/

Include: C, C++, Objective-C, Fortran, Java, Ada, si


Go
Biblioteci
Compilare

#include "iostream.h"
int main()
{
cout << "Hello\n";
}
gcc -S garbage.c

Cod - ISA

g++ hello.C -o hello

g++ -c hello.C
g++ hello.o -o hello

Compilare
Exemplu program
#include <stdio.h>

int main()
{int i;
printf("Valoare din memorie: %d", i);
printf("Introduceti i: ");scanf("%d", &i);
printf("\nAti introdus: %d", i);
return 0;
}

Compilare
main este de tipul int, implicit return 0 de la final.
nu toate compilatoarele sunt rigide, multe
accepta void main() sau main().
incercati cele 3 moduri si notati diferentele

scanf()
completati gresit scanf("%d", i)
In mod normal: Memory fault (core dumped) => SO
protejeaza memoria

printf() afiseaza ?
comportament indiferent de SO.

Permisiuni de utilizare a
fisierelor
chmod
Comanda ls l afiseaza
Sunt descrise 3 permisiuni

-rw-r--r--

read cu valoarea asociata 4


write cu valoarea asociata 2
execute cu valoarea asociata 1
rw: 4+2 = 6

Sunt descrise 3 categorii: user, group, others

Permisiuni de utilizare a
fisierelor
Exemple:

Permisiune grup

chmod 777 test

Permisiune other

Permisiune pentru user read+write+execute = 4+2+1 =7

chmod ugo+rwx best


chmod u+x fest
chmod -R g+rwx /dur

Asociaza toate
permisiunile pentru
fisierul best
Parametrul -R = recursiv
Asociaza toate permisiunile
pentru grup pentru toate
fiserele din directorul dur

Utilizarea fisierelor
Primul character - identifica
test ca fisier.
Initial drepturile pentru fisierul
test sunt:
read si write pentru user
Read pentru grup
Read pentru other

Drepturile pentru fisierul test


sunt:
read si write execute pentru
toate categoriile de utilizatori

Editoare de text
NANO
Comenzile din
meniul de la baza
paginii se acceseaza
apasand tasta
CTRL si litera
specificata.
Salvarea se face
apasand CTRL +X
selectand y si apoi
introducand numele
fiserului.

Editoare de text
vi

Comenzile se introduc prin


apasarea tasteti ESC
urmata de tasta:
Editorul se inchide folosind
Esc urmat in meniul de la
baza editorului de :q.
Fisierul se salveaza folosind
Esc urmat in meniul de la
baza editorului de :w
urmat de numele fisierului.
Un fisier existent se editeaza
folosind
Esc urmat in meniul de la
baza editorului de i.

Alte comenzi:
exit vi and save changes: ESC + :wq! nume_fisier

Shell script
Pas 1
Creaza fisier cu:
Editor de text nano
nano test
Salvare: CTRL + X
Comanda cat > test

# Primul script
#
clear
echo Lab USO"

Pas 2

Pas 3

Schimba permisiunea:
chmod +x test
chmod 755 test

Executa:
bash test
sh test
./test

. = executa
/ = director curent

Shell script
Exemplu: introduceti urmatorul exemplu
folosind un editor de text
# login, data & timp
#
clear
echo "Hello $USER"
echo Azi = ";date
echo Numar de utilizatoril : " ; who | wc -l
echo "Calendar"
cal
exit 0

Comentariu

Afisaza valoarea
variabilei USER
Numara liniile din
rezultatul comenzii who

Shell script
#!/bin/bash
echo Unu"
a=1
echo Doi
echo $a
Ce rezultate obtinenti

Scriptul va fi rulat
folosind bash
Definire variabila

Afisara variabila

Shell script
echo Cuvant "
read var
echo Cuvant: $var"
echo 2 cuvinte"
read var1 var2
echo Cuvinte: \$var1\ \$var2\"
echo Default? "
read
echo "$REPLY"
echo Matrice?
read -a matrice
echo "${matrice[0]}, ${matrice[1]} "

Se citeste o variabila
de la tastatura

Se citesc 2 variabile
de la tastatura
separate de spatiu
Se citeste o variabila
de la tastatura si
este salvata in
variabila REPLY

Se citesc variabile
de la tastatura si
sunt salvate sub
forma de matrice

Shell script
Sintaxa IF
Sintaxa simpla IF
if [ <condition> ];then
<commands>
fi
Sintaxa IF ELSE -ELIF
If [<condition> ]; then
<commands>
else
If [<condition> ]; then
<commands>
fi
fi

Sintaxa IF ELSE -ELIF


If [<condition> ]; then
<commands>
elif [<condition> ]; then
<commands>
else
<commands>
fi

Sintaxa IF ELSE
If [<condition> ]; then
<commands>
else
<commands>
fi

Shell script
Sintaxa IF
Sintaxa parametri IF
-eq = egal
-ne = diferit
-gt = mai mare strict
-lt = mai mic strict

Sintaxa parametri IF
-d = director
-e =exista fisier

Shell script
#!/bin/bash
a=2
b=1
if [ $a -eq $b ]; then
echo Egal"
else
echo diferit"
fi

Se verifica
egalitatea a doua
variabile definite
mai sus

Shell script
#!/bin/bash
a=2
b=1
if [ $a -eq $b ]; then
echo Egal"
elif [ $a -gt $b ]; then
echo a>b"
else
echo b>a"
fi

Se verifica
egalitatea a doua
variabile definite
mai sus folosind
structura if-elif-else

Shell script

Se verifica
egalitatea a doua
variabile primite de
la tastatura.
Variabilele se
introduce separate
de tasta ENTER

Shell script
Se creaza un fisier cu
numele
picdata_curenta.jpg
Sleep 2 ruleaza scriptul la fiecare 2
secunde.
Se poate opri folosind
comanda CTRL + C

Shell script

Se defineste variabila file


cu valoarea adresei
relative ./file adica
fisierul file din directorul
current.
-e verifica existenta
fisierului in director.

Shell script