Skoči na vsebino

OS - 2021/22 - DN02

Povezava
Navodila ucilnica.fri.uni-lj.si
Oddaja ucilnica.fri.uni-lj.si

Podnaloga (a)

Za podane PIDe procesov, ki so podani kot argumenti skripti (število argumentov je tako poljubno), izpišite velikosti izvornih izvršljivih datotek procesov v B. Če skripta dobi stikalo -p (na katerem koli mestu), naj poleg PIDov izpište tudi pot. Vsakršno pisanje na disk je prepovedano!

Primer vnosa in izpisa:

>./DN2a.sh $$ 2665
3894 1183448
2665 748968
>./DN2a.sh $$ 2665 -p
3894 1183448 /bin/bash
2665 748968 /usr/lib/firefox/firefox-bin

Podnaloga (b)

Napišite skripto, ki za podano ime procesa, za vse procese izpiše PID in argumente s katerimi je bil proces pognan (tipično sicer procesi ob poganjanju niti nimajo argumentov) ločenimi s presledki v formatu kot je prikazan spodaj, sortirani od najnovejšega do najstarejšega. Vsakršno pisanje na disk je prepovedano!

Primer vnosa in izpisa za nekaj vrstic ob predhodnem zagonu xeyes -fg red in xeyes, ki imata v spodnjem primeru PIDa 2665 in 2667:

>./DN2b.sh xeyes
2667
2665 -fg red

Podnaloga (c)

Napišite interaktivni program, ki sprejema imena procesov (program vsakič vpraša "Vnesite ime procesa: ", kjer sledi poziv v isti vrstici) in po pritisku na Enter izpiše OBSTAJA ali - glede na to ali je trenutno na sistemu tak proces (na stanje se ne ozirajte). Pazite na velike in male črke pri izpisu. Vsakršno pisanje na disk je prepovedano!

Primer vnosa in izpisa, če na sistemu teče Firefox:

>DN2c.sh
Vnesite ime procesa: firefox-bin
OBSTAJA
Vnesite ime procesa: ognjenalisica
-
Vnesite ime procesa: systemd
OBSTAJA

Podnaloga (d)

V nekem starem zapisniku telovadnice "Gibčna veverica" iz časov Avstro-Ogrske so zapisane teže oseb skozi čas. Težava je, da podatkov niso tabelirali, ampak je vse shranjeno opisno. Na srečo je format predvidljiv in sicer vedno ime (oz. tudi priimek ali več imen), ki mu sledijo kilogrami (še večja sreča je, da sta ime in kilogrami vedno v isti vrstici - ni lomljenja). Pripravite skripto, ki za vsakega posameznika izpiše ime in njegovo povprečno celoštevilsko težo skozi čas (števil niti ne zaokrožujte, ampak jih kar celoštevilsko porežite). Seznam naj bo sortiran po abecedi. Vsakršno pisanje na disk je prepovedano!

Primer vnosa in izpisa za datoteko gibcnaveverica.txt, ki je pripeta testom:

>./DN2d.sh gibcnaveverica.txt Alojzij Ivana Frančiška Jožef
Alojzij 73
Frančiška 67
Ivana 63
Jožef 96

Testiranje

Skripte testirajte sproti med razvojem tako, da sami gledate, če deluje vse, kot ste si zamislili. Šele ko ste prepričani, da skripte delujejo pravilno, uporabite testno skripto z javnimi testi in popravite morebitne napake, ki so vam ušle. Vsakršno pisanje na disk je prepovedano!

Upoštevajte tudi, da testna skripta z javnimi testi testira samo del delovanja vaše skripte. Po pretečenem roku za oddajo domače naloge se bodo vaše skripte pognale na strežniku z javnimi testi in dodatnimi testi v kontroliranem okolju. Glavni razlog v dodatnem testiranju (da torej testov ne poznate) je v tem, da preprečimo, da bi kdo na trdo sprogramiral natančno ujemanje s testi (vede ali nevede) in dobil vse točke, čeprav skripta v resnici deluje slabo. Na podlagi rezultatov testov boste dobili točke, ki jih boste potrdili na zagovoru.

Oddajte datoteke DN1a.sh, DN1b.sh, DN1c.sh in DN1d.sh, torej zgolj skriptne programe, ne pa arhiva (kot npr. tar ali zip). Pazite, da je kodni nabor utf-8 in da se za novo vrstico uporablja \n (Unixov/Linuxov znak za novo vrstico) in ne \r\n ali \r.


Zadnja posodobitev: May 15, 2022