Download - CTI USO Tema2 Update3
Utilizarea Sistemelor de Operare: Tema 2Termen de predare: Marti, 26 Noiembrie 2013, ora 23:55
Utilizarea Sistemelor de Operare - Tema 2
Descriere
Tema consta ın realizarea unui set de task-uri asupra unui sistem de operare Linux, gata instalat ıntr-o
mas, ina virtuala.
Pentru predarea temei sunt necesare:
• conexiunea la internet
Termen de predare:
• Timpul de lucru efectiv este de 7 de zile (+1 zi prelungire deadline)
• Uploadarea codului: 26 noiembrie, ora 23:55
• Uploadarea se face pe formularul de la adresa urmatoare:
https://docs.google.com/forms/d/1WvH6uvv9jWzhMsZNemZWOSfW1qJM3afcCR94olP92as/viewform
Deadline-ul temei este hard. NU se accepta ıntarzieri dupa 26 noiembrie, ora 23:55.
Atent, ie!
Chiar s, i dupa ce at, i predat codul, NU s,terget, i arhiva cu mas, ina virtuala pana nu va aflat, i nota! Daca vor
exista probleme ın corectarea temei, fara arhiva NU se pot face contestat, ii sau rezolva eventualele probleme
aparute.
Pagina 1/ 7
Utilizarea Sistemelor de Operare - Tema 2
Testare
Testarea temei se va face DOAR autentificat ca utilizator ”root”, folosind programul instalat uso. Progra-
mul ”uso” implementeaza testele pentru toate task-urile din aceasta tema. Acesta poate fi executat ın orice
moment pentru a verifica daca au fost rezolvate corect task-urile.
Versiunea programului check este afis,ata pe prima linie a output-ului.
Versiunea curenta este: v9. Codename: What side was that, private Pyle?
In cazul ın care testele vor fi actualizate, modificarile ajung ın mod automat pe mas, inile virtuale. Comanda
uso update va descarca ultima versiune a programului uso folosit pentru testarea temei. Pentru a actualiza
manual checker-ul, putet, i apela uso update ca utilizator root.
Testarea finala a temei se realizeaza prin intermediul utilitarului automat de verificare a temelor. Tot ce
trebuie voi sa facet, i este sa rulat, i uso submit s, i sa ıncarcat, i codul ın formularul descris ın pagina anterioara.
Pentru a us,ura testarea, recomandam:
• Setarile mas, inii virtuale NU ar trebui modificate (nici macar o actualizare a VMWare Tools). Daca
totus, i considerat, i ca este necesara o modificare ıntrebat, i ıntai pe forum-ul temei daca este acceptata.
• Mas, ina virtuala sa porneasca iar sistemul de operare sa se ıncarce complet fara interact, iune din
exterior
• Parola de root sa ramana cea implicita (”student”)
ATENT, IE: Mas, ina virtuala vine implicit cu aceste condit, ii ındeplinite s, i nici un task nu va afecta vreuna
din ele. Va rugam sa NU alterat, i vreuna din aceste componente deoarece riscat, i sa primit, i 0 puncte pe
tema.
Notare
Nota pe ıntreaga tema este data de punctajul acumulat pe toate task-urile, punctaj afis,at de catre programul
check la execut, ia fara nici un parametru.
Se pot lua maxim 100 de puncte pe ıntreaga tema. Acest punctaj este echivalent cu 0.5 puncte din nota
finala.
Nu este obligatorie rezolvarea tuturor task-urilor. Task-urile pot fi rezolvate ın orice ordine, mai put, in ın
situat, ia ın care un task depinde de rezolvarea unui alt task.
Pagina 2/ 7
Utilizarea Sistemelor de Operare - Tema 2
Task 1 (20p)
Hint: man bash
Creat, i scriptul /home/student/task01.sh care:
• Primes,te 2 argumente
• Seteaza o variabila locala scriptului TASK01 ce va avea valoarea egala cu valoarea primului argu-
ment primit
• Al doilea argument reprezinta calea catre un alt script pe care va trebui sa-l lansat, i ın execut, ie din
interiorul scriptului vostru task01.sh. Acest script primit ca al doilea argument trebuie sa fie rulat cu
argumentul TASK01 (nu valoarea variabilei anterior definita, ci textual) s, i va trebui sa s,tie de existent,a
variabilei TASK01 cat s, i de valoarea acesteia, anterior setata.
Info! Pentru acest exercit, iu nu se acorda punctaj part, ial.
Task 2 (15p)
Hint: trap
Creat, i scriptul /home/student/task02.sh care creaza directorul /home/student/folder02 s, i 5 fis, iere ın direc-
torul /home/student/folder02/, fiecare la interval de 2 secunde, respectand urmatoarele cerint,e:
• Fiecare fis, ier cont, ine o singura linie ce respecta format-ul A\B:C:D E
– A reprezinta numarul de secunde scurse de la 1970-01-01 00:00:00 UTC
– B reprezinta ora ın format 12 ore
– C reprezinta minutele
– D reprezinta secundele
– E reprezinta AM sau PM
– Atent, ie! Intre A s, i B exista caracterul ”\” iar ıntre D s, i E exista caracterul ” ” (spat, iu)
• Fis, ierele vor fi denumite task02.N.P
– N reprezinta numarul fis, ierului (1, 2, 3, 4, 5)
– P reprezinta ID-ul procesului care a creat fis, ierul
• Dupa ce sunt create cele 5 fis, iere, acesta le s,terge pe toate, inclusiv directorul folder02
– Daca scriptul este suspendat temporar din execut, ie (ıntrerupt de comanda CTRL+Z pe
perioada rularii sale), atunci acesta trebuie sa s,tearga toate fis, ierele create pana la acel moment
(inclusiv directorul folder02 iar procesul sa se termine imediat fara a mai continua crearea
fis, ierelor ramase
Info! Pentru acest exercit, iu nu se acorda punctaj part, ial.
Pagina 3/ 7
Utilizarea Sistemelor de Operare - Tema 2
Task 3 (15p)
No hint :(
Creat, i un one-liner /home/student/task03.sh care primes,te ca argument calea catre un director ce cont, ine
mai multe fis, iere s, i mai multe subdirectoare. Gasit, i mai jos un exemplu de director care respecta aceasta
ierarhie. Fis, ierele din aceasta ierarhie de directoare cont, in cuvinte separate print-un singur spat, iu (” ”), o
singura virgula (”,”) sau un singur caracter \n (new line).
Se dores,te ca scriptul sa scrie ın fis, ierul /home/student/caractere03 numarul total de caractere printa-
bile care se gasesc ın toate fis, ierele de la calea data ca argument scriptului.
Atent, ie! Urmatoarele caractere printabile nu vor fi luate ın considerare la numarul total de caractere
printabile:
• Caracterul spat, iu (” ”)
• Caracterul virgula (”,”)
Atent, ie! In fis, ierul /home/student/caractere03.err vor fi scrise toate erorile care apar pe parcursul rularii
scriptului.
Info! Exemplu de astfel de director gasit, i la adresa:
http://swarm.cs.pub.ro/~tibi/uso/tema2/task03_sample.tar.gz
Info! Pentru acest exercit, iu nu se acorda punctaj part, ial.
Task 4 (20p)
No hint :(
Dorim sa cream un script care este capabil sa ruleze un Makefile pentru noi, dar s, i sa ruleze executabilul
generat de acest Makefile. Pentru aceasta este nevoie sa creat, i:
1. [10p] Fis, ierul Makefile ın directorul /home/student/task04/ care:
(a) [8p] Pe dependent,a build preia fis, ierele main.c, rulz.c, uso.h, libuso.so din directorul /home/student/task04/
s, i creaza fis, ierul executabil uso.bin ın acelas, i director. Acest lucru se ıntampla s,tiind ca:
i. [0p] libuso.so este o biblioteca partajata (uso.h este fis, ierul header ce cont, ine prototipul
funct, iei definite ın bibioliteca libuso.so)
ii. [4p] Generarea fis, ierelor obt, inute ın urma etapei de asamblare este obligatorie (Atent, ie!
Salvat, i aceste fis, iere cu extensia .xo)
iii. [4p] O modificare ıntr-un fis, ier sursa nu trebuie sa genereze recompilarea ıntregului executabil
ci doar ce este necesar
(b) [2p] Pe dependint,a clean s,terge toate fis, ierele create ın urma compilarii, dar nu s, i fis, ierele sursa
ori biblioteca partajata (avet, i grija sa nu va s,terget, i fis, ierul Makefile sau celelate taskuri/scripturi;
se recomanda sa facet, i backup ınainte!)
2. [10p] Scriptul /home/student/task04.sh care:
Pagina 4/ 7
Utilizarea Sistemelor de Operare - Tema 2
(a) Ruleaza Makefile creat anterior (la pasul 1)
(b) Lanseaza ın execut, ie uso.bin
(c) Scriptul returneaza procesului parinte valoarea de ies, ire a executabilului (uso.bin), lansat ın
execut, ie anterior (la pasul b)
Info! Exemple de fis, iere necesare la punctul 1.(a) gasit, i la adresa:
http://swarm.cs.pub.ro/~tibi/uso/tema2/task04_sample.tar
Atent, ie! Toate subpunctele sunt dependente de subpunctele anterioare. In concluzie, nu se acorda punctaj
pentru subpunctul 1.(a).iii daca subpunctul 1.(a).ii nu este funct, ional, s, .a.m.d. Aceasta regula este valabila
pentru orice subpunct.
Task 5 (25p)
No hint :(
Lucrat, i ıntr-o companie de succes s, i avet, i o funct, ie de analist financiar. Unul din task-urile voastre este
sa gasit, i angajatul cu cel mai mic salariu care are cele mai bune rezultate profesionale, pe baza unor date
deja existente. In acelas, i timp trebuie sa va asigurat, i ca datele existente sunt valide s, i provin din surse
sigure. In cazul ın care datele sau sursele nu sunt corecte va trebui sa comunicat, i acest lucru superiorului
vostru prin-un mesaj. La final, s,eful vostru va va comunica rezultatul muncii printr-o promovare la funct, ia
de analist programator daca at, i rezolvat cu succes acest task. Multa bafta!
Din fericire, suntet, i un bun utilizator al sistemului de operare Linux datorita studiului intens depus ın facul-
tate s, i dorit, i sa va us,urat, i aceasta munca. Pentru aceasta trebuie sa creat, i scriptul /home/student/task05.sh
care:
1. Primes,te 2 parametri:
(a) [3p] Scriptul trebuie sa verifice ca s-au primit exact 2 argumente. In caz contrar scriptul trebuie
sa iasa cu o valoare de retur (vezi mai jos codurile de retur)
(b) Primul parametru reprezinta o cale catre un director. In acel director se gases,te un fis, ier ce
cont, ine date despre angajat, i, angajati.txt
i. [3p] Daca directorul nu exista, atunci scriptul trebuie sa iasa cu o valoare de retur (vezi mai
jos codurile de retur)
ii. [5p] Scriptul trebuie sa verifice ca primul argument primit este o cale absoluta ce nu se afla ın
afara directorului /home/student/task05/. In caz contrar scriptul trebuie sa iasa cu o valoare
de retur (vezi mai jos codurile de retur)
iii. [3p] Daca fis, ierul nu exista, atunci scriptul trebuie sa iasa cu o valoare de retur (vezi mai jos
codurile de retur)
(c) Al doilea parametru reprezinta numele unui angajat din compania vostra
2. [0p] Cauta ın fis, ier, atat ın lista primilor 10 angajat, i cat s, i ın lista ultimilor 10 angajat, i, tot, i angajat, ii
care au numele de familie identic cu numele primit ca al doilea argument
3. [0p] Dintre aces,ti angajat, i ıl alege pe acela care are salariul cel mai mic
4. [0p] Daca sunt mai mult, i angajat, i care au acelas, i nume de familie s, i salarii egale atunci va trebui sa ıl
gasit, i pe acela care are cel mai mare scor de performant, a
Pagina 5/ 7
Utilizarea Sistemelor de Operare - Tema 2
5. [10p] Dupa ce acest angajat a fost gasit, va trebui sa afis,at, i la ies, irea de eroare standard ID-ul acestui
angajat.
6. [1p] La final, scriptul trebuie sa iasa cu o valoare de retur specificata mai jos.
Info! Formatul fis, ierului ce cont, ine date despre angajat, i este urmatorul:
ID ANGAJAT\NUME ANGAJAT\PRENUME ANGAJAT\SALARIU ANGAJAT\SCOR -
PERFORMANT, A
Exemplu de fis, ier gasit, i la adresa:
http://swarm.cs.pub.ro/~tibi/uso/tema2/task05_sample.txt
Info! Codurile de retur pe care trebuie sa le returneze scriptul vostru:
4 - daca scriptul nu primes,te 2 argumente
5 - daca directorul primit ca prim argument nu exista
6 - daca directorul primit ca prim argument nu este o cale absoluta ce se afla ın directorului /home/student/task05/
7 - daca fis, ierul angajati.txt nu se gases,te ın directorul primit ca prim argument
8 - daca nu a avut loc nicio eroare
Atent, ie! Toate subpunctele sunt dependente de subpunctele anterioare. In concluzie, nu se acorda punctaj
pentru subpunctul 1.(b).i daca subpunctul 1.(a) nu este funct, ional, s, .a.m.d. Aceasta regula este valabila
pentru orice subpunct.
Task 6 (5p + 10p BONUS)
No hint because you are a PRO :)
Suntet, i administratorului unui sistem s, i pentru o mai buna monitorizare dorit, i sa urmarit, i anumite eveni-
mente care au loc ın sistem. Pentru aceasta trebuie sa se modifice comportamentul daemon-ului rsyslogd
astfel ıncat:
1. [5p] Toate mesajele de tip mail care au cel put, in prioritatea notice, exceptandu-le pe cele de prioritate
err, vor fi logate ın fis, ierul /var/log/usomail.log
2. [10p] Toate mesajele de prioritate crit, exceptand mesajele de tip mail s, i news vor fi logate ın fis, ierul
/var/log/usocrit.log
Atent, ie! Toate subpunctele sunt dependente de subpunctele anterioare. In concluzie, nu se acorda punctaj
pentru subpunctul 2 daca subpunctul 1 nu este funct, ional.
Pagina 6/ 7
Lista schimbarilor
7