Documente Academic
Documente Profesional
Documente Cultură
de la République de Moldova
Université technique de Moldavie
Faculté d’Ordinateur, Informatique et Microélectronique
Filière francophone “Informatique”
SOMIPP
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
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.
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
Procesor
#!/bin/bash
num=1
mode="+" # Declaram modul de functionare initial
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
Procesor
#!/bin/bash
cnt=0
running=1
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
do
done
Procesor
#!/bin/bash
cur=1
do
cur=$(($cur + 2))
cur=$(($cur * 2))
done