Informacje:
Pracownia 5.X
Zapoznanie sie z systemem Unix, zadania na stronie kursu
(Podstawowe polecenia: help, man, man man)
Pracownia 12.X: Wprowadzenie i emacs
-
Zapoznać się z podstawowymi możliwościami edytora emacs,
przeczytac instrukcje ze strony kursu. Nabyć umiejętność
uruchamiania edytora w oknie terminala tekstowego,
przechodzenia do końca i początku linii, o słowo,
iksaowania słowa, treści do końca wiersza, zamiany
całego słowa na duże lub małe litery itp....
-
Przetestowac i wykorzystywać podstawowe skróty klawiszowe
emacsa w bash'u
-
Zrealizować zadania do 1 pracowni ze strony kursu (bez list ACL).
Pracownia 19.X: Proste skrypty
- Stworzyć strukturę podkatalogów o głębokości co najmniej 2 zawierająca
poza innymi kilka plików o takiej samej nazwie i dla niektórych takiej
samej zawartości. Korzystając z poleceń np. find,sort,uniq,read i potoków: |
napisać złożoną instrukcje wypisującą duplikaty plików w sensie tej samej
nazwy, występujące w danym poddrzewie katalogów.
- Napisać skrypt realizujący powyższe zadanie, który wywołany bez argumentu
wypisze sposób poprawnego wywołania, a z argumentem potraktuje go jako
nazwe katalogu (intrukcja if). Dodać modyfikacje gdy drugi argument będzie
'md5' to skrypt ma wypisywać duplikaty tylko jeśli pliki będą miały
zawartość o tej samej sumie kontrolnej (polecenie md5sum).
- Wypisać ciąg liczb parzystych od 0 do 200 przy uzyciu petli while.
Można zastosowac zmienne, instrukcje expr, oraz apostrofy `` zwracające
wyjście z programu.
- Napisać skrypt, który dla danego katalogu, podanego jako argument
znormalizuje w nim wszystkie nazwy plików: "*.jpg" "*.Jpg" "*.JPG",...
w ten sposób aby zamienić w nazwach wszystkie litery duże na małe
(patrz polecenie tr).
- Wykonaj polecenie 'ls -l' na wszystkich plikach znalezionych przy
pomocy polecenia find z nazwą zgodną ze wzorcem "*.c*". Napisz polecenie
na dwa sposoby: find'a z poleceniem -exec i przy użyciu polecenia xargs.
-
Napisz skrypt liczący sumę wszystkich liczb podanych jako argumenty.
Można wykorzystać polecenie shift.
Czy potrafisz połączyć skrypt liczący sume
z zadaniem 3 tak aby policzyc sume liczb parzystych od 0 do 200 ?
Następnie napisz polecenie,
które z listy plików (ls -l) wytnie rozmiary plików i zsumuje je
za pomocą tego skryptu.
Pracownia 26.X: Zmienne bash i X-windows
-
Zapoznać się ze zmiennymi środowiskowymi PS1, PATH i ogólnie
sposobem ich ustawiania i odczytywania w bash'u
(np. man bash (PROMPTING).
Zmodyfikować zmienną PS1 tak aby znak zachety (prompt) był
aktualny w postaci
"Witaj: 'nazwa_uzytkownika' w katalogu 'kat biezacy' o godzinie ... >"
Dodać do zmiennej PATH katalog ~/bin i katalog bieżący tak aby
można było wykonywać skrypty bez podawania ścieżki np. zad1.sh zamiast
./zad1.sh
-
Korzystająć z instrukcji read i petli while napisac skrypt
wybierajacy ze standartowego wejscia zadane pola np. 1 i 3 jak
np. program cut. Zmieniając znak rozgraniczający pola ze spacji na :
przy pomocy zmiennej IFS wypisać na podstawie pliku /etc/passwd
nazwy uzytkowników i ich katalogi domowe (pola oddzielic spacja).
- Zadania z X windows: 1-5 ze strony kursu (pracownia nr 3)
Po wykonaniu zadania 4 przy uruchomionym X przetestuj uruchamianie
zarzadcow okienek np. twm, blackbox, fluxbox, metacity.
Pracownia 9.XI: Wyrażenia regularne
Zapoznaj się z programami: grep, tr, sed. Powinienneś potrafić np.
zamienić przy pomocy każdego z dwóch ostatnich litery małe na duże
lub wybrane.
Wykonaj zadania z
4 listy z kursu dotyczącej wyrażeń regularnych. Zadania 1-4 są
do wykonania w trakcie pracowni, zadania 5-8 na następną pracownię.
W zadaniu 4 napisz skrypt na nie używając polecenia find, można przedstawić
także alternatywne rozwiązanie z find.
Pracownia 23.XI: Bezpieczeństwo, szyfrowanie, podpisy cyfrowe
Wykonaj zadania z
5 listy z kursu. Zadania 1,2,3,5 są
do wykonania w trakcie pracowni, zadanie 4 wykonaj w domu.
Pracownia 30.XI: cos innego:
openssl
Można pokazać i wytłumaczyć rozwiązania zadań na nastepnych zajęciach.
Pracownia 7.XII: Procesy, sygnały, śledzenie procesów strace
- Napisz skrypt, który w petli bedzie cos robił
(np. co sekunde wypisywał biezaca godzine). Sprawdz
wysyłanie do procesu róznych sygnałów (SIGTERM, SIGINT, SIGQUIT,
ale takze SIGFPE, SIGILL), a nastepnie
rozbuduj skrypt o przechwytywanie tych sygnałów (trap) i sprawdz,
ze to działa. Sprawdz mozliwosc
usmiercenia sygnałem SIGKILL procesu, który przechwytuje wszystkie 15 sygnałów.
-
Sprawdz mozliwosc zawieszania procesu sygnałem SIGSTOP i wznawiania sygnałem SIGCONT. Sprawdz,
ze zamiast powyzszych sygnałów mozna wykorzystywac polecenia Ctrl+Z, fg i bg.
-
Sprawdz wartosci priorytetów procesów i ich liczby nice, a nastepnie przecwicz obnizanie priorytetu
pracujacego w tle procesu (nice/renice).
-
Napisz skrypt A, który uruchomi skrypt potomny B, który zabije proces swojego rodzica (A).
Sprawdz (np. poleceniem pstree), czy osierocony proces zostanie poprawnie adoptowany przez proces
init.
-
Nie korzystajac z dobrodziejstw oferowanych przez ulimit, napisz skrypt, który przyjmie 3 parametry:
nazwe programu do uruchomienia i dwie liczby naturalne x i y, a nastepnie uruchomi zadany program.
Jesli program bedzie działac jeszcze po x sekundach (mozna to sprawdzac np. co sekunde poleceniem ps z
odpowiednimi parametrami), to nalezy spróbowac go zabic, wysyłajac mu sygnał SIGTERM. Jesli program
bedzie działac nadal po y sekundach, to nalezy go zabic sygnałem SIGKILL.
Nastepnie wypróbuj działanie powyzszego skryptu, piszac dwa skrypty do uruchomienia – jeden, który
daje sie zabic przez SIGTERM i drugi, który na to nie pozwala.
-
Uruchom jakiś program np. przeglądarke WWW ze śledzeniem programem strace.
Przećwicz podłączania się i śledzenie strace'em już uruchomionego programu,
czy jeśteś w stanie śledzić dowolny proces ?
Jaki jest powód błędu segmentacji programu core
wskazanego przez
prowadzącego i jak go mozna wyeliminowac (mamy tylko gotowy program binarny).
Pracownia 14.XII: Procesy, sygnały,.. (ciąg dalszy)
Zadania 8,9 i 11-17 z listy
wprowadzenie do procesów
Pracownia 21.XII: Skrypty c.d. bash/awk/...
Zadanie 1 do zrobienia na pracownie, zadanie 2 do oddania na następnymch zajęciach.
- Napisz skrypt rysujący choinkę w postaci tekstowej
o wysokości zadanej przez parametr N w postaci dla N=3:
^
*|*
**|**
***|***
| _
Skrypt można napisać w bash'u awk lub też użyć sed'a
Oceniana będzie zwartość i czytelność. Ilość punktów
będzie zależeć od rozmiaru skryptu (maksimum osiągnie
osoba która odda najkrótszy skrypt).
- Napisać skrypt generujący galerie obrazków w HTML mając
opis w postaci pliku tekstowego w którym mamy w każdej
linii dwa pola nazwa pliku i opis oddzielone znakiem ':'.
Skrypt powinien generować galerie z plikami HTML z
odpowiednimi podpisami i odpowiednio przeskalowanymi
plikami graficznymi (przy pomocy np. programu convert
z pakietu ImageMagic, lub programów pakietu netpbm:
np. pnmscale) w postaci jak przykładowa galeria
http://cepc09.ii.uni.wroc.pl/gallery2/
Tytuł galerii oraz linie z copyrightem można przekazać
jako parametr lub dodać do pliku opisu.
Pracownia 4.I.2010:
-
Wyszukaj i ściągnij źródła jakiegoś popularnego prostego narzędzia
uruchamianego w wierszu poleceń - może to być na przykład gzip.
Poniższa instrukcja dotyczy tego programu, ale możesz próbować wykonać
ją na prawie każdym innym kodzie źródłowym. Rozpakuj źródła,
przeczytaj plik INSTALL i postępuj zgodnie z instrukcjami. Zainstaluj
program do wybranego przez siebie katalogu (utwórz go poprzednio).
Sprawdź na przykładach, że skompilowana przez Ciebie wersja działa tak
samo jak gzip istniejący już w systemie.
-
Wyłap dowolny komunikat pojawiający się przy użyciu gzipa oraz kawałek
strony pomocy man. Odszukaj je w plikach źródłowych;
przetłumacz je na język polski. Skompiluj program na nowo i sprawdź,
że zmiany odniosły skutek.
-
Przygotuj dwa katalogi, jeden z oryginalnymi a drugi ze
zmodyfikowanymi przez Ciebie źródłami. Zapoznaj się z poleceniem
diff i wyprodukuj poprawkę (patch) w formacie unified,
który zawiera różnicę między tymi dwoma katalogami. Zrób kopie
oryginalnych i zmodyfikowanych źródeł, przy czym zmień nazwę
zawierających je katalogów; kolejne polecenia wykonuj na kopiach.
Zapoznaj się z programem patch, ze szczególnym uwzględnieniem
opcji -p. Wejdź do katalogu zawierającego oryginalne źródła i
nałóż wykonaną poprawkę (na początku wypróbuj działanie wykorzystując
opcję --dry-run). Podobnie zrób ze zmodyfikowanymi źródłami;
tam za pomocą poprawki usuń swoje modyfikacje.
-
Wykonaj kolejne kopie katalogów. Tym razem sprawdź, jakie modyfikacje
pliku (zmiana kluczowych wierszy, zmiana wierszy oddalonych od
miejsca, którego dotyczy łatka, dodanie, usunięcie wierszy) pozwalają
jeszcze nałożyć łatkę. Dodaj białe znaki w kluczowych miejscach,
odszukaj opcję patch odpowiedzialną za ich ignorowanie i spróbuj
ponownie nałożyć łatkę.
Pracownia 11.I.2010:
Zadania z sieci lista 8a ze strony kursu
Pracownia 18.I.2010:
Zadania z gnuplot'a lista 10 ze strony kursu
Punktacja:
Na pracowniach od 12.X do 26.X można było uzyskac 30 punktów
za wszystkie zadania (czyli po około 4-5 punktów za zadanie).
Za zadania oddawane z opóźnieniem tygodniowym można uzyskać
2/3 punktów. Poniżej w tabelce tymczasowa punktacja, dla każdego
tygodnia sumaryczna ilość punktów za bieżące zadania, a pomiędzy
za zadania zaległe oddane z opóźnieniem:
|