Sunteți pe pagina 1din 9

Ministère de l'éducation, de la culture et de la recherche

de la République de Moldova
Université technique de Moldavie
Faculté d’Ordinateur, Informatique et Microélectronique
Filière francophone “Informatique”

SOMIPP

Travail pratique nr.6


Thème: Gestion des processus sous GNU / Linux
OS

Effectué par l’étudiant(e) de gr FI-181 : Bonta Alexandr

Vérifié par le professeur : Colesnic Victor

Chișinau 2020
Scopul lucrării: studierea comenzilor destinate gestionării proceselor,
programarea timpului de start al proceselor, transferul și gestionarea datelor între
procese.

1) Creați și executați o singură dată script-ul (în acest script, nu puteți utiliza operatorul de
condiție și operatorii de control a proprietăților și valorilor), care va încerca să creeze directorul
test în directorul home. În cazul în care directorul va fi creat, script-ul va scrie în fișierul ~/raport
un mesaj "catalog test was created successfully" şi va crea în directorul test un fișier numit
Data_Ora_Lansarii_Scriptului. Apoi, indiferent de rezultatele etapei anterioare, script-ul trebuie să
interogheze, folosind comanda ping, adresa www.traiasca_moldova.md și în cazul în care host-ul
nu este disponibil, adăugați un mesaj de eroare în fișierul ~/raport (se recomanda - >,>>, ~, date, ||,
&&).

#!/bin/bash

chmod a+w /home/sasa


mkdir /home/sasa/test
cd /home/sasa
touch raport
echo 'catalog test was created successfully' >> /home/sasa/raport
cd /home/sasa/test
touch Data_Ora_Lansarii_Scriptului;
ping -c5 www.traiasca_moldova.md || echo 'Hostul nu este disponibil' >>
/home/sasa/raport

2) Modificați script-ul din 1) pentru încă o singură executare peste 2 minute. Controlați
conținutul fișierului ~/raport și afișați liniile noi apărute ( se recomanda – at, tail).

#!/bin/bash

sleep 120;
cd /home/sasa/lab6;
#cat '' > /home/sasa/raport
./ex1;
cat /home/sasa/raport | tail -n2
exit
3) Modificați script-ul din 1) ca să ruleze la fiecare 5 minute din oră, în zilele pare ale
săptămânii.

*/5 * * * .3.5 /home/sasa/lab6/ex1

4) Creați două procese de fundal care efectuează același ciclu infinit de calcul (de exemplu,
înmulțirea a două numere). După lansarea proceselor, prevedeți posibilitatea de a utiliza consolele
virtuale din care au fost lansate. Folosind comanda top, analizați procentul de utilizare a
microprocesorului de către aceste procese. Rezervați primului proces lansat o rată de utilizare a
resurselor microprocesorului nu mai mare de 20% (se recomanda – nice, kill).

#!/bin/bash

while true
do
a=$(shuf -i 0-100 -n 1)
b=$(shuf -i 0-100 -n 1)

#echo $a , $b;
c=$(($a*$b));
#echo $c
done
# top
# top –p nrProc

5) Procesul "Generator" transmite informații procesului "Handler" utilizând un fișier ascuns.


Procesul "Handler" trebuie să efectueze următoarele procesări asupra liniilor noi în acest fișier:
dacă linia conține un singur caracter "+", procesul "Handler" comută modul în adunare și așteaptă
introducerea datelor numerice. Dacă șirul conține un singur caracter "*", atunci procesul "Handler"
comută modul în înmulțire și așteaptă introducerea datelor numerice. În cazul când linia conține un
întreg, atunci procesul "Handler" execută operația curentă activă (modul activ curent) asupra
valorii variabilei calculate (curente) și valoarea recent introdusă (de exemplu, adună sau înmulțește
rezultatul calculat anterior cu numărul recent introdus). Când lansați script-ul, modul se va seta în
adunare, iar variabila calculată – în 1. Dacă este primit QUIT, script-ul afișează un mesaj despre
finalizare și finalizează activitatea. Dacă sunt primite alte valori, script-ul finalizează activitatea cu
un mesaj de eroare - date de intrare eronate.
GENERATOR ex5Gen.sh
#!/bin/bash

while true # Creem un ciclu infinit


do # In ciclu facem
read line # Citim linia
echo "$line" >> v_problem # Scrim linia citita in fisierul v_problem

if [[ "$line" == "QUIT" ]] # Daca linia introdusa este QUIT


then
exit 0 # Iesire cu codul 0
fi

if [[ ! "$line" =~ [0-9]+ && "$line" != "+" && "$line" != "*" ]] # Daca


linia nu este combinatie din orice cifre, + sau *. Operatorul =~ verifica daca sirul
din stanga coincide cu expresia regulata extinsa din dreapta
then
echo "Incorrect input :(" # Printam textul
exit 1 # Iesire cu codul 0
fi
done

Procesor
#!/bin/bash

touch v_problem # Cream fisierul v_problem


> v_problem # Redirectionarea iesiri spre fisier

num=1
mode="+" # Declaram modul de functionare initial

tail -n 0 -f v_problem | # Citim liniile nou introduse


while true # Cream un ciclu
do
read line # Citim linia
case $line in # Case dupa linie
"+") # Cazul linia = "+"
mode="+" # Trecem in modul de adunare
echo "Switched to the adding mode"
;; # ; in case, comenzile sunt executate secvential
"*") # Cazul linia = "*"
mode="*" # Trecem in modul de imnmultire
echo "Switched to the multiplying mode"
;; # ; in case, comenzile sunt executate secvential
"QUIT") # Cazul linia = QUIT
echo "Stopped by the QUIT input"
killall tail # Se finalizeaza procesul fiu tail

exit 0 # Iesire cu codul 0


;; # ; in case, comenzile sunt executate secvential
[0-9]*) # In cazul de repetitia orice combinatie din cifre
de 0 sau mai multe ori
case $mode in # Se alege in ce mod va functiona
"+") # Modul de adunare
echo "Adding" $num "and " $line
num=$(($num + $line)) # Adunam numarul care il avem cu
numarul introdus, numarul ia valoarea noua
echo "And getting " $num
;; # ; in case, comenzile sunt executate secvential
"*") # Modul de inmultire
echo "Multiplying" $num "and " $line
num=$(($num * $line)) # Inmultim numarul care il avem cu
numarul introdus, numarul ia valoarea noua
echo "And getting " $num
;; # ; in case, comenzile sunt executate secvential
esac # Sfarsit case
;; # ; in case, comenzile sunt executate secvential
*) # In orice alt caz
echo "Stopped by the INCORRECT input !!"
killall tail # Se finalizeaza procesul fiu tail
exit 1 # Iesire cu codul 0
;; # ; in case, comenzile sunt executate secvential
esac # Sfarsit case
done

6) Procesul "Generator" citește liniile de la consolă până când va fi introdus TERM. În acest
caz, acesta trimite un semnal de sistem SIGTERM procesului "Handler". Procesul "Handler" (ca
în exemplul, ce afișează, în buclă infinită, un număr natural în fiecare secundă) trebuie să
intercepteze semnalul de sistem SIGTERM și să finalizeze activitatea, afișând mesajul despre
finalizarea activității cu primirea semnalului de la alt proces.

Generator
#!/bin/bash

while true # Cream un ciclu infinit


do
read line # Citim linia
case $line in # Case dupa linie
TERM) # Cazul linia = TERM
kill -SIGTERM $(cat vi_problem) # Trimitem semnalul (-SIGTERM)
procesului. SIGTERM zice procesului sa se stanga. Obtinem $(...) indicatorul
procesului pe care il inchidem din fisier
exit 0 # Iesire cu codul 0
;; # ; pentru case. Comenzile se indeplinesc secvential
*) # Orice alt caz
continue # Se reincepe bucla
;; # ; pentru case. Comenzile se indeplinesc secvential
esac # Sfarsitul case
done

Procesor
#!/bin/bash

echo $$ > vi_problem # Scrim PID-ul procesului in fisier

cnt=0
running=1

handle() # Declaram functia handle fara parametri de intrare


{
running=0
}

trap 'handle' SIGTERM # trap permite sa prindem semnale si sa executam codul


cand apar semnale. Programul este terminat. Se defineste handlerul 'handle' care
activeaza la primirea semnalului SIGTERM
while (( running != 0 )) ; # Pana cand semnalul nu este ideplinit
do
((cnt=$cnt + 1)) #
sleep 1 # Fiecare secunda afisam un numar natural. Retinere 1
sec
echo $cnt #
done

echo "Stopped by SIGTERM signal"

7) Procesul "Generator" citește linii de la consolă în buclă infinită. Dacă linia citită conține un
singur caracter "+", procesul "Generator" trimite procesului "Handler" un semnal USR1. Dacă
linia conține un singur caracter "*", "Generator" trimite procesului "Handler" semnalul USR2.
Dacă șirul conține cuvântul TERM, "Generator" trimite un semnal SIGTERM procesului
"Handler". Alte valori ale liniilor sunt ignorate. Procesul "Handler" adună 2 sau multiplică cu 2
valoarea curentă a numărului procesat (valoarea inițială este 1) în funcție de semnalul primit de la
utilizator și afișează rezultatul pe ecran. Calcularea și afișirea sunt efectuate o dată pe secundă.
Primind semnalul SIGTERM, "Handler" își finalizează activitatea și afișează mesajul despre
finalizarea activității cu primirea semnalului de la alt proces.

Generator

#!/bin/bash

while true; # Cearam un ciclu infinit

do

read line # Citim linia

case "$line" in # Case dupa linie

TERM) # Cazul linie = TERM

kill -SIGTERM $(cat vii_problem) # Trimitem semnalul (-SIGTERM) procesului.


SIGTERM zice procesului sa se stanga. Obtinem $(...) indicatorul procesului pe care il
inchidem din fisier

exit # Se termina executia scriptului

;; # ; pentru case. Comenzile se indeplinesc secvential

+) # Cazul linia = "+"

kill -USR1 $(cat vii_problem) # Kill transmite semnal (USR1) procesului


cu PID $(...) din fisier.
;; # ; pentru case. Comenzile se indeplinesc secvential

[*]) # Cazul linia = "*"

kill -USR2 $(cat vii_problem) # Kill transmite semnal (USR2) procesului


cu PID $(...) din fisier.

;; # ; pentru case. Comenzile se indeplinesc secvential

*) # Orice alt caz

continue # Se reincepe bucla

;; # ; pentru case. Comenzile se indeplinesc secvential

esac # Sfarsitul case

done

Procesor

#!/bin/bash

echo $$ > vii_problem # Scrim PID-ul procesului in fisier

cur=1

mode="+" # Declaram modul de functionare initial

sigterm() # Declaram functia sigterm fara parametri de intrare

echo "Stopped by SIGTERM signal"

exit 0 # Iesim cu codul 0

user1() # Declaram functia user1 fara parametri de intrare

mode="+" # Trecem la modul +2

user2() # Declaram functia user1 fara parametri de intrare

mode="*" # Trecem la modul *2

trap 'sigterm' SIGTERM # Se defineste handlerul 'sigterm' care activeaza la


primirea semnalului SIGTERM
trap 'user1' USR1 # Se defineste handlerul 'user1' care activeaza la
primirea semnalului USR1

trap 'user2' USR2 # Se defineste handlerul 'user2' care activeaza la


primirea semnalului USR2

while true; # Cearam un ciclu infinit

do

case "$mode" in # Case dupa mode

+) # Cazul mode = "+"

cur=$(($cur + 2))

;; # ; pentru case. Comenzile se indeplinesc secvential

[*]) # Cazul mode = "*"

cur=$(($cur * 2))

;; # ; pentru case. Comenzile se indeplinesc secvential

esac # Sfarsit case

sleep 1 # Retinere 1 sec

echo "$cur" # Afisam valoarea lui $cur

done

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

  • SOMIPP
     SOMIPP
    Document6 pagini
    SOMIPP
    Damean Alexandra
    Încă nu există evaluări
  • Lab. 2
    Lab. 2
    Document7 pagini
    Lab. 2
    Cristina Florea
    Încă nu există evaluări
  • Amoo 2
    Amoo 2
    Document8 pagini
    Amoo 2
    AlionaCrigan
    Încă nu există evaluări
  • LL3 (Amoo)
    LL3 (Amoo)
    Document6 pagini
    LL3 (Amoo)
    Eric Semeniuc
    Încă nu există evaluări
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Încă nu există evaluări
  • Lab 1 Somipp
    Lab 1 Somipp
    Document7 pagini
    Lab 1 Somipp
    TîmburŞtefan
    Încă nu există evaluări
  • Somipp Linux 2 UTM
    Somipp Linux 2 UTM
    Document7 pagini
    Somipp Linux 2 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • TW Lab2
    TW Lab2
    Document4 pagini
    TW Lab2
    Dan
    Încă nu există evaluări
  • AMOO Lab3
    AMOO Lab3
    Document6 pagini
    AMOO Lab3
    sergiu
    Încă nu există evaluări
  • SOMIPP Lab5
    SOMIPP Lab5
    Document4 pagini
    SOMIPP Lab5
    X3 KTO
    Încă nu există evaluări
  • Lab 3 LFA
    Lab 3 LFA
    Document3 pagini
    Lab 3 LFA
    Fil Gorea
    Încă nu există evaluări
  • Laboratorul 1
    Laboratorul 1
    Document11 pagini
    Laboratorul 1
    Дарья Рг
    Încă nu există evaluări
  • Ppe 1
    Ppe 1
    Document5 pagini
    Ppe 1
    Victor Lungu
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • Lucrare de Laborator nr.4 Florea Cristina
    Lucrare de Laborator nr.4 Florea Cristina
    Document9 pagini
    Lucrare de Laborator nr.4 Florea Cristina
    Cristina Florea
    Încă nu există evaluări
  • Amoo 6
    Amoo 6
    Document6 pagini
    Amoo 6
    Mihai Ciubotaru
    Încă nu există evaluări
  • TAP Lab2
    TAP Lab2
    Document4 pagini
    TAP Lab2
    Adrian Bodorin
    Încă nu există evaluări
  • Lab 1 Docx
    Lab 1 Docx
    Document6 pagini
    Lab 1 Docx
    AlexandruBotnaru
    Încă nu există evaluări
  • Laboratorul Cercetari
    Laboratorul Cercetari
    Document5 pagini
    Laboratorul Cercetari
    Buinovschi Corneliu
    Încă nu există evaluări
  • Lab6 AMOO - Diagrame de Stari Si Activitati
    Lab6 AMOO - Diagrame de Stari Si Activitati
    Document10 pagini
    Lab6 AMOO - Diagrame de Stari Si Activitati
    Dan
    Încă nu există evaluări
  • Amoo 4
    Amoo 4
    Document5 pagini
    Amoo 4
    AlionaCrigan
    Încă nu există evaluări
  • Examen PW
    Examen PW
    Document71 pagini
    Examen PW
    DorinRotaru
    Încă nu există evaluări
  • Lab.6 FC
    Lab.6 FC
    Document3 pagini
    Lab.6 FC
    Cristina Florea
    Încă nu există evaluări
  • Lab 1 Somipp
    Lab 1 Somipp
    Document5 pagini
    Lab 1 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • BDC 9
    BDC 9
    Document6 pagini
    BDC 9
    Ion Boika
    Încă nu există evaluări
  • Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Document4 pagini
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Ion Damaschin
    Încă nu există evaluări
  • SOMIPP7
    SOMIPP7
    Document3 pagini
    SOMIPP7
    Damean Alexandra
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document4 pagini
    Lab 3
    Rosca Doinita
    Încă nu există evaluări
  • AMOO3 Morcotilo Nichita FINAL
    AMOO3 Morcotilo Nichita FINAL
    Document11 pagini
    AMOO3 Morcotilo Nichita FINAL
    Никита Мк.
    Încă nu există evaluări
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • Pam 4
    Pam 4
    Document4 pagini
    Pam 4
    violina
    Încă nu există evaluări
  • Lab2 (TS)
    Lab2 (TS)
    Document7 pagini
    Lab2 (TS)
    Zeul Hriscei
    Încă nu există evaluări
  • Pam Exam
    Pam Exam
    Document2 pagini
    Pam Exam
    Culea Constantin
    Încă nu există evaluări
  • Raport Final
    Raport Final
    Document26 pagini
    Raport Final
    Cristi Adașan
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Laborator 1 Cucu Eugeniu
    Laborator 1 Cucu Eugeniu
    Document5 pagini
    Laborator 1 Cucu Eugeniu
    Cucu Eugen
    Încă nu există evaluări
  • Vasilachi Igor Lab.6 BDC v1
    Vasilachi Igor Lab.6 BDC v1
    Document5 pagini
    Vasilachi Igor Lab.6 BDC v1
    VadimPlasiciuc
    Încă nu există evaluări
  • PAM
    PAM
    Document3 pagini
    PAM
    nicu zuza
    Încă nu există evaluări
  • Lucrare de Laborator NR.1 LFC
    Lucrare de Laborator NR.1 LFC
    Document10 pagini
    Lucrare de Laborator NR.1 LFC
    John Smith
    Încă nu există evaluări
  • Lab 3 Ppe
    Lab 3 Ppe
    Document8 pagini
    Lab 3 Ppe
    Anastasia Gherman
    Încă nu există evaluări
  • AMOO - Proiect de An
    AMOO - Proiect de An
    Document4 pagini
    AMOO - Proiect de An
    Dan
    Încă nu există evaluări
  • Somipp Linux 3 UTM
    Somipp Linux 3 UTM
    Document7 pagini
    Somipp Linux 3 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • Vasilachi Igor Lab 5 BDC v1
    Vasilachi Igor Lab 5 BDC v1
    Document8 pagini
    Vasilachi Igor Lab 5 BDC v1
    Fil Gorea
    Încă nu există evaluări
  • Somipp Linux 1 UTM
    Somipp Linux 1 UTM
    Document10 pagini
    Somipp Linux 1 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • Lab 3 Somipp
    Lab 3 Somipp
    Document14 pagini
    Lab 3 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Lab 10,11,12,13 BDC
    Lab 10,11,12,13 BDC
    Document19 pagini
    Lab 10,11,12,13 BDC
    Oleg Chian
    Încă nu există evaluări
  • SOMIPP Labs
    SOMIPP Labs
    Document107 pagini
    SOMIPP Labs
    Ionel Boaghe
    Încă nu există evaluări
  • Somipp 2
    Somipp 2
    Document8 pagini
    Somipp 2
    Damean Alexandra
    Încă nu există evaluări
  • ASDN2
    ASDN2
    Document6 pagini
    ASDN2
    Viktor Dobrovolschi
    Încă nu există evaluări
  • PPE Lab4-5
    PPE Lab4-5
    Document8 pagini
    PPE Lab4-5
    danielploaia
    Încă nu există evaluări
  • Lab 7 Somipp
    Lab 7 Somipp
    Document5 pagini
    Lab 7 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Lab.3 Florea Cristina
    Lab.3 Florea Cristina
    Document7 pagini
    Lab.3 Florea Cristina
    Cristina Florea
    Încă nu există evaluări
  • SO Laborator 04
    SO Laborator 04
    Document4 pagini
    SO Laborator 04
    Daniel Parlapan
    Încă nu există evaluări
  • Lab02 Ro
    Lab02 Ro
    Document6 pagini
    Lab02 Ro
    Feli Herman
    Încă nu există evaluări
  • Lecţia 1 - Elemente de Bază Ale Limbajului C++. Lucrul Cu Fişiere Text.
    Lecţia 1 - Elemente de Bază Ale Limbajului C++. Lucrul Cu Fişiere Text.
    Document5 pagini
    Lecţia 1 - Elemente de Bază Ale Limbajului C++. Lucrul Cu Fişiere Text.
    Valeriu Cuțebov
    100% (1)
  • L2POO - Operatii de Intrare-Iesire
    L2POO - Operatii de Intrare-Iesire
    Document9 pagini
    L2POO - Operatii de Intrare-Iesire
    ciobycostyyahoo.com
    Încă nu există evaluări
  • Activitati 05 - Instructiunile Limbajului C#
    Activitati 05 - Instructiunile Limbajului C#
    Document9 pagini
    Activitati 05 - Instructiunile Limbajului C#
    Catalina Brindas
    Încă nu există evaluări
  • Instructiunea Repetitiva Cu NR Cunoscut de Pasi PDF
    Instructiunea Repetitiva Cu NR Cunoscut de Pasi PDF
    Document5 pagini
    Instructiunea Repetitiva Cu NR Cunoscut de Pasi PDF
    Cristina
    Încă nu există evaluări
  • Bonta Alexandr SAV Lab1
    Bonta Alexandr SAV Lab1
    Document10 pagini
    Bonta Alexandr SAV Lab1
    X3 KTO
    Încă nu există evaluări
  • Bonta Alexandr SAV Lab2
    Bonta Alexandr SAV Lab2
    Document5 pagini
    Bonta Alexandr SAV Lab2
    X3 KTO
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document5 pagini
    Lab 3
    X3 KTO
    Încă nu există evaluări
  • SAV Lab8
    SAV Lab8
    Document3 pagini
    SAV Lab8
    X3 KTO
    Încă nu există evaluări
  • SOMIPP Lab5
    SOMIPP Lab5
    Document4 pagini
    SOMIPP Lab5
    X3 KTO
    Încă nu există evaluări