Seminár k operačným systémom: záverečné zadania 2017

  1. Termín odovzdania je ________.
  2. Vypracujte obe zadania.
    • jedno zadanie vypracujte v PowerShelli.
    • druhé zadanie vypracujte v unixovskom shelli. Pozorne si prečítajte obmedzenia nižšie
  3. Zadanie musí implementovať celú požadovanú funkcionalitu. Vynechanie ktoréhokoľvek bodu má za následok zamietnutie zadania a hodnotenie FX. Hodnotenie sa odvíja od spôsobu implementácie zadania a od odpovedí na kontrolné otázky zamerané na pochopenie vypracovania.
  4. Zadanie spokojne vzájomne konzultujte. Vypracovanie však musí byť samostatné a jednoznačné.
  5. Plagiátorstvo a identický kód je trestaný okamžitým hodnotením FX.
  6. Ak využijete kusy kódu alebo rady z internetu, ste povinní uviesť do zdrojového kódu odkaz na zdroj (URL blogu, odkaz na StackOverflow a pod.) V opačnom prípade je zadanie zamietnuté ako plagiát.
  7. Zadanie bude obhájené individuálne a ústne v termíny uvedené vyššie.

Zadanie 1: Fortune Cookies

Fortune Cookies je sada užitočných citátov dostupná od najranejších časov operačných systémov. Príkaz fortune vyberie náhodný citát a vypíše ho na štandardný výstup:

fortune

Výsledkom je napr. citát:

"Talk is cheap.  Show me the code."

    - Linus Torvalds

Citáty sú zoskupené v databázach, pričom každá z nich je reprezentovaná textovým súborom. Obvyklá databáza uvádza citáty oddelené znakom %. Napr. databáza goedel:

Beware of computerized fortune-tellers!
%
Chocolate chip
%
For 20 dollars, I'll give you a good fortune next time ...
%
Do not read this fortune under penalty of law.
Violators will be prosecuted.
(Penal Code sec. 2.3.2 (II.a.))

Požiadavky

  • Implementujte príkaz fortune, ktorý vyberie náhodný citát zo všetkých databáz a vypíše ho na štandardný výstup:

    fortune
    
  • Implementujte príkaz fortune, ktorý vyberie náhodný citát z jednej databázy

    fortune -d goedel
    
  • Implementujte príkaz, ktorý stiahne databázu z definovanej URL adresy a zaradí ju medzi dostupné databázy, spomedzi ktorých sa vyberajú citáty.

    fortune-download http://ics.upjs.sk/databaza.txt
    
  • Pripravte si dve ukážkové databázy a aspoň jednu internetovú databázu, na ktorej demonštrujete všetky príkazy.

Zadanie 2: Spracovanie log súborov

Majme systém, ktorý generuje logovací súbor, ktorý vyzerá nasledovne:

2017-12-10 10:21:16.993  INFO --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : unknown: Restarting Consumer: tags=[{amq.ctag-cIlAPNJRXDylTM1UAH5GsA=user.aml-check-status-requested}], channel=Cached Rabbit Channel: AMQChannel(amqp://ft-iam@127.0.0.1:5672/ft,11), conn: Proxy@56e7f0b Shared Rabbit Connection: SimpleConnection@2a5586ac [delegate=amqp://ft-iam@127.0.0.1:5672/ft, localPort= 50737], acknowledgeMode=AUTO local queue size=0
2017-12-10 10:21:17.007  INFO --- [cTaskExecutor-2] o.s.a.r.c.CachingConnectionFactory       : unknown: Created new connection: SimpleConnection@1afb1d2f [delegate=amqp://ft-iam@127.0.0.1:5672/ft, localPort= 53079]
2017-12-10 10:21:17.953  WARN --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : unknown: Consumer raised exception, processing can restart if the connection factory supports it
2017-12-10 10:21:18.212  WARN --- [cTaskExecutor-3] c.g.n.MessageService : root: Handling message: OK

Na každom riadku je jeden záznam v nasledovnom tvare:

  • časová pečiatka (rok-mesiac-deň hodina:minúta:sekunda.milisekunda)
  • dve medzery
  • úroveň hlášky: jeden z reťazcov DEBUG alebo INFO alebo WARN alebo ERROR.
  • medzera a tri pomlčky a medzera
  • názov vlákna (thread) v hranatých zátvorkách
  • medzera
  • názov Java triedy, ktorá vygenerovala hlásenie
  • medzera, dvojbodka a medzera
  • meno aktuálne prihláseného používateľa, pre ktorého sa vygenerovala hláška alebo unknown ak používateľ nie je známy
  • dvojbodka
  • text logovacej hlášky

Požiadavky

Implementujte nástroj filter-log s nasledovnou funkcionalitou:

  • vypíšte logovacie záznamy za posledných 5 minút
  • vypíšte logovacie záznamy za poslednú hodinu
  • vypíšte logovacie záznamy pre zadaného používateľa
  • vypíšte logovacie záznamy, ktoré obsahujú v texte logovacej hlášky zadaný text
  • vypíšte logovacie záznamy, ktoré sa týkajú jednej zadanej Java triedy
  • vypíšte logovacie záznamy, ktoré sú dôležitejšie alebo rovné ako zadaná úroveň hlášky. Ak používateľ vyžiada hlášky úrovne WARN, vypíšte hlášky úrovne WARN a ERROR, ale už nie DEBUG a INFO. Priority úrovní sú DEBUG < INFO < WARN < ERROR.

Obmedzenie unixovského shellu

  • Zadanie v shelli demonštrujte na serveri student.ics.upjs.sk alebo na vlastnej inštalácii Linuxu.
  • V zadaní použite len nástroje vymenované v norme POSIX.
  • Zadanie skontrolujte nástrojom shellcheck dostupnom buď online alebo na serveri student.ics.upjs.sk.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *