System Unix

Materiały do przedmiotu Internetowe Systemy Operacyjne (UNIX)

Podstawowym materiałem szkoleniowym jest książka mojego autorstwa „System Unix”. Ze względu na jej brak w bibliotece szkolnej zamieszczam tutaj jej wersje PDF – Skrypt System Unix – Tomana Marcin (dostępny również w AppStore jako UnixBook)

Ramowy zakres materiału do opanowania

  • Wprowadzenie do systemów UNIX
  • Operacje kartotekowe i plikowe (ls,cat,cp,mv,rm,mkdir)
  • Prawa plików, Linki (chown,chmod,chgrp, ln,file)
  • Procesy w unixie (ps,top)
  • Zadania, zatrzymywanie, praca w tle (bg,fg,kill,^Z)
  • Operacje shell’a (sh,csh, bash,tcsh)
  • Zmienne środowiskowe i zmienne shella (set,setenv,$)
  • Uzupełnianie nazw plików (*,?,[],{},^)
  • Operacje na strumieniach (>,<,>>,>&,<<,|,&&,||, ;,&, ())
  • Cytowanie i uruchamianie zadań w lini poleceń („,’,`)
  • Operacje na użytkownikach (w,who,finger,users,talk,write,mesg)
  • Formatowanie wyjścia (printf,head,tail,wc)
  • Sortowanie zawartości plików (sort, uniq)
  • Filtrowanie zawartości plików (grep, egrep, cut)
  • Operacje na histori poleceń w csh (zm. history)
  • Wykorzystywanie poleceń z historii (!)
  • Podstawianie nazw poleceń z parametrami (alias)
  • Przeszukiwanie katalogów (find)
  • Operacje na archiwach plików (tar)
  • Kompresja plików w unixie (compress,gzip)
  • Zaawansowane przetwarzanie tekstu (sed, awk)
  • Skrypty shell’a w unixie
  • Wykorzystywanie w skryptach parametrow i danych systemowych (date,df,du)
  • Edytor vi

Ćwiczenia laboratoryjne

  1. Wpisać do pliku spis.txt listę nazwisk, posortować ją do pliku spis2.txt, stworzyć kilka linków twardych do pliku spis2.txt, przy pomocy programu find znaleźć wszystkie odwołania (linki) do pliku spis2.txt
  2. Zapisać wynik polecenia finger w pliku i ustawić mu uprawnienia rwxr-x—. Zrobić to przy pomocy programu chmod korzystając z zapisu praw cyfrowego oraz opisowego.
  3. Stworzyć 2 pliki o nazwach program i baza_danych. Ustawić tak uprawnienia, żeby każdy mógł uruchomić program, który będzie mógł modyfikować bazę danych. Użytkownicy nie mogą mieć możliwości czytania pliku baza_danych. Skorzystać z prawa SUID
  4. W katalogu public_html stworzyć katalog strona a w nim podkatalog pliki. Ustawić tak uprawnienia dla katalogu strona, żeby z poziomu www nie było możliwe wyświetlenie zawartości katalogu. Dla katalogu pliki ustawić tak uprawnienia, żeby skrypty ze strony mogły tworzyć i modyfikować pliki w tym katalogu.
  5. Uruchomić polecenie ‚man sh’. Następnie zawiesić jego działanie. Uruchomić polecenie kopiowanie dużej liczby plików i w trakcie jego działania zawiesić jego działanie. Wyświetlić zadania w tle oraz procesy (w hierarchi drzewa). Uruchomić proces kopiowania w tle oraz wznowić na pierwszym planie zadanie ‚man sh’. Następnie zawiesić zadanie i wyłączyć go przy pomocy polecenia kill.
  6. Stworzyć katalog o nazwie składającej się słowa kopia oraz bieżącego roku i miesiąca
  7. Wyświetlić tekst: w aktualnym katalogu jest X plików php, gdzie X będzie wyznaczona na podstawie polecenia ls
  8. W pliku skan.txt zapisać listę tylko nazw plików w kolejności od największego.
  9. Przy pomocy edytora pico stworzyć plik pliki_do_skopiowania.txt z nazwami plików i katalogów do zrobienia kopi. Napisać polecenie, które skopiuje wszystkie pozycje z pliku pliki_do_skopiowania.txt do katalogu kopie
  10. Wyswietlic liste tylko adresow email (bez MAILER-DAEMON) wysylajacych poczte w kolejnosci od tego co najwiecej wysyla maili. Skorzystac z mailq.
  11. Wyswietlic imie i nazwisko osob pracujacych z siec.wsi na podstawie finger
  12. Na podstawie pliku /proc/cpuinfo wyswietlic nazwe procesora serwera
  13. Na podstawie pliku /proc/meminfo wyswietlic liczbe zainstalowanej i wolnej pamieci serwera.
  14. Z polecenia uptime wyswietlic obciazenie serwera z ostatnich 15 minut (ostatni par. load average)
  15. Wyswietlic imiona i nazwiska kont na podstawie polecenia finger lub pliku /etc/passwd
  16. Wyswietlic wszystkie linki twarde do zadanego pliku (skorzystac z polecenia find
  17. Na podstawie polecenia uptime dopisac do pliku load.log wpis DATA-GODZ LOAD_AVERAGE gdzie DATA to aktualna data w formacie DD/MM/RRRR, GODZ to aktualna godzina w formacie HH:MM, LOAD_AVERAGE to ostatni parametr polecenia uptime
  18. Stworzyć w excelu tabelę z kolumnami imie,nazwisko,miasto,wiek,szkola. Zapisać ten arkusz w pliku CSV. Przegrać plik na serwer unix i napisać polecenia wyświetlające:
    • listę nazwisk z wybranej szkoły,
    • liczbę osób z określonego miasta,
    • 3 najczęściej powtarzające się imiona.
  19. Na podstawie polecenia „nslookup www.onet.pl” stworzyc plik o nazwie : dane_ADRES_IP.txt gdzie ADRES_IP to adres ip dla www.onet.pl zwrocony przez nslookup
  20. Na podstawie polecenia „netstat -n” wyfiltrować nawiązane połączenia (ESTABLISHED) protokołu TCP (nie TCP6) oraz wyświetlić adresy IP podłączonych komputerów.
  21. Na podstawie mailq wyświetlić adresy email nadawców maili będących aktualnie w kolejce
  22. Na podstawie polecenia df wyświetlić ile zajmują pliki umieszczone na wolumenach pod /home
  23. Na podstawie polecenia df wyświetlić ile procentowo są zajęte partycje 1 dysku SCSI (/dev/sda)
  24. Na podstawie polecenia „netstat -r” wyświetlić IP domyślenego gateway’a
  25. Na podstawie polecenia mailq policzyć ile zajmują maile stoją w kolejce których nadawcą jest użytkownik sawo@wsi.edu.pl
  26. Napisac skrypt, ktory wyswietli liczby podzielne przez 3 mniejsze od 20.
  27. Napisać w vi skrypt wyświetlający na podstawie polecenia ‚ps ax’ listę występujących statusów (kolumna stat) wraz z liczbą procesów posiadających ten status. Ustawić kolejność wg najczęściej nwystępujących.
  28. Napisać w vi skrypt wyświetlający na podstawie polecenia df listę 5-ciu najbardziej zajętych systemów plików w formacie: procent użycia nazwa systemu plików
  29. Napisać w vi skrypt, który na podstawie polecenia du wyświetli listę 3 najwięcej zajmujących podkatalogów katalogu głównego. Nie wyświetlać podkatalogów!
  30. Napisać skrypt, który wyświetli 10 największych skrzynek pocztowych użytkowników zaczynających się na ‚si’. Skrzynki to pliki w katalogu /var/spool/mail
  31. Napisać skrypt, który na podstawie plików /etc/group oraz /etc/passwd wyświetli nazwiska i imiona osób należących do grupy rok20053
  32. Napisać skrypt w vi, który wszystkim plikom *.txt z wszystkich podkatalogów nada uprawnienia rw-r–r–
  33. Na podstawie polecenia mailq wyświetlić liczbę maili w kolejce oraz ile miejsca zajmują. Dołączyć również informacje o mailach od MAILER-DAEMON
  34. Napisac skrypt, ktory wyswietli 10 najwiekszych skrzynek pocztowych z katalogu /var/spool/mail w formacie
    • konto (??? MB)
  35. Stworzyc skrypt, ktory ma wyswietlić ile jest miejsca wolnego na /home/stud, oraz jeżeli miejsca jest więcej niz 50% to wyswietlić tekst „miejsca dużo”
  36. W pliku uptime.log dopisać aktualne obciążenie serwera z ostatnich 5-ciu minut w zaokrągleniu do 1 miejsca po przecinku
  37. Napisać skrypt, który znajdzie wszystkie pliki z rozszerzeniem php3 i php w podkatalogach i wszystkie te pliki skopiuje do katalogu kopia ze zmianą rozszerzenia na phps
  38. Na podstawie polecenia ps wyświetlić zestawienie:
    • procesy ze statusem X – sztuk Y
    • lista tych procesów…
    • procesy ze statusem X2 – sztuk Y2
    • lista tych procesów…
  39. Na podstawie polecenia who wyświetlić zestawienie:
    • adres sieci logowania: X – uzytkowników Y
    • lista tych użytkowników…
    • adres sieci logowania: X2 – uzytkowników Y2
    • lista tych użytkowników…
  40. Napisać skrypt, który jeżeli suma maili w kolejce przekroczy 1MB, to wyśle do administratora maila z informacją
  41. Na podstawie pliku konfiguracyjnego o formacie
    • KATALOGI=~/public_html;~/skrypty
    • KOPIA=~/kopia
    • wyświetlić liczbę plików znajdujących się w katalogach oraz ile one zajmują miejsca
    • wykonać kopie wszystkich katalogów w katalogu kopia w pliku o nazwie zawierającej dzisiejszą datę
  42. Napisać skrypt, który dla zalogowanych użytkowników wyświetli listę o strukturze:
    • Konto Imię Nazwisko Katalog_domowy
  43. Napisać skrypt, który dla podkatalogów bieżącego katalogu wyświetli listę w formacie:
    • Nazwa katalogu, prawa, zajmowane miejsce
  44. Napisać skrypt, który na podstawie pliku /proc/meminfo wyświetli ilość pamięci zajętej (MemTotal-MemFree)
  45. Napisać skrypt, który na podstawie polecenia netstat wyświetli liczbę pakietów oczekujących w kolejce dla połączeń www (kolumna SEND-Q i RECV-Q)
  46. Napisać skrypt, który na podstawie polecenia netstat wyświetli zestawienie zdalnych hostów z liczbą połączeń od nich w kolejności malejącej wg formatu
    • Nazwa hosta – liczba połączeń
  47. Napisać skrypt, który na podstawie polecenia netstat wyświetli zestawienie stanów połączeń z liczbą połączeń w kolejności rosnącej wg formatu:
    • Stan połączeń – liczba połączeń
  48. Napisać skrypt, który dla przykładowych imon zamieszczonych w pliku imiona.txt wyświetli wszystkie imiona i nazwiska kont na serwerze. Skorzystać z pliku /etc/passwd
  49. Napisać skrypt, który na podstawie polecenie netstat wyciągnie nazwy komputerów dla których połączenia mają status ESTABLISHED i dla nich wyświetli adresy IP przy pomocy polecenie nslookup

Tematy projektowe

  1. Napisać skrypt sprawdzający wolne miejsce przy pomocy programu „du”. Jeżeli miejsca zacznie brakować skrypt ma wysłać maila do administratora.
  2. Napisać skrypt sprawdzający zajętość danych na danym koncie na podstawie polecenia ‚quota’. Jeżeli miejsca zacznie brakować skrypt ma wysłać maila do właściciela.
  3. Napisać skrypt zapisujący w pliku mailer.log aktualną liczbę oraz sumę wielkości wszystkich maili w kolejce. Skorzystać z programu ‚mailq’. W pliku również ma byc logowana informacja o liczbie maili pogrupowanych wg nadawcy maila.
  4. Napisać skrypt znajdujący użytkowników o skrzynkach powyżej limitu oraz zajętości katalogu domowego powyżej limitu (skorzystać z ‚du’). Skrypt ma wysyłać maile z powiadomieniami do użytkowników oraz zbiorczego maila do administratora.
  5. Napisać skrypt logujący aktualną liczbę procesów oraz obciążenie procesora. Jeżeli obciążenie jest powyżej ustalonego limitu, skrypt ma zapisywać również procesy zajmujące najwięcej czasu procesora oraz wysyłać odpowiedniego maila do administratora.
  6. Skasowac z biezacego katalogu tyle najstarszych plikow, zeby pozostale zajmowaly mniej niz 100MB
  7. Napisać skrypt wykonujący kopie serwisu
  8. Napisać skrypt wykonujący kopie bazy danych na podstawie mysqldump
  9. Napisać skrypt monitorujący stan kolejki maili
  10. Napisać skrypt monitorujący stan działania UPS’a
  11. Napisać skrypt monitorujący zapełnienie dysków
  12. Napisać skrypt zarządzający zadaniami cron
  13. Napisać skrypt monitorujący stan baterii notebooka

Comments are closed.