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
- 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
- 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.
- 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
- 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.
- 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.
- Stworzyć katalog o nazwie składającej się słowa kopia oraz bieżącego roku i miesiąca
- Wyświetlić tekst: w aktualnym katalogu jest X plików php, gdzie X będzie wyznaczona na podstawie polecenia ls
- W pliku skan.txt zapisać listę tylko nazw plików w kolejności od największego.
- 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
- Wyswietlic liste tylko adresow email (bez MAILER-DAEMON) wysylajacych poczte w kolejnosci od tego co najwiecej wysyla maili. Skorzystac z mailq.
- Wyswietlic imie i nazwisko osob pracujacych z siec.wsi na podstawie finger
- Na podstawie pliku /proc/cpuinfo wyswietlic nazwe procesora serwera
- Na podstawie pliku /proc/meminfo wyswietlic liczbe zainstalowanej i wolnej pamieci serwera.
- Z polecenia uptime wyswietlic obciazenie serwera z ostatnich 15 minut (ostatni par. load average)
- Wyswietlic imiona i nazwiska kont na podstawie polecenia finger lub pliku /etc/passwd
- Wyswietlic wszystkie linki twarde do zadanego pliku (skorzystac z polecenia find
- 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
- 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.
- 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
- 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.
- Na podstawie mailq wyświetlić adresy email nadawców maili będących aktualnie w kolejce
- Na podstawie polecenia df wyświetlić ile zajmują pliki umieszczone na wolumenach pod /home
- Na podstawie polecenia df wyświetlić ile procentowo są zajęte partycje 1 dysku SCSI (/dev/sda)
- Na podstawie polecenia „netstat -r” wyświetlić IP domyślenego gateway’a
- Na podstawie polecenia mailq policzyć ile zajmują maile stoją w kolejce których nadawcą jest użytkownik sawo@wsi.edu.pl
- Napisac skrypt, ktory wyswietli liczby podzielne przez 3 mniejsze od 20.
- 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.
- 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
- 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!
- 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
- 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
- Napisać skrypt w vi, który wszystkim plikom *.txt z wszystkich podkatalogów nada uprawnienia rw-r–r–
- Na podstawie polecenia mailq wyświetlić liczbę maili w kolejce oraz ile miejsca zajmują. Dołączyć również informacje o mailach od MAILER-DAEMON
- Napisac skrypt, ktory wyswietli 10 najwiekszych skrzynek pocztowych z katalogu /var/spool/mail w formacie
- konto (??? MB)
- 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”
- W pliku uptime.log dopisać aktualne obciążenie serwera z ostatnich 5-ciu minut w zaokrągleniu do 1 miejsca po przecinku
- 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
- 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…
- …
- 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…
- …
- Napisać skrypt, który jeżeli suma maili w kolejce przekroczy 1MB, to wyśle do administratora maila z informacją
- 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ę
- Napisać skrypt, który dla zalogowanych użytkowników wyświetli listę o strukturze:
- Konto Imię Nazwisko Katalog_domowy
- Napisać skrypt, który dla podkatalogów bieżącego katalogu wyświetli listę w formacie:
- Nazwa katalogu, prawa, zajmowane miejsce
- Napisać skrypt, który na podstawie pliku /proc/meminfo wyświetli ilość pamięci zajętej (MemTotal-MemFree)
- 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)
- 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ń
- 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ń
- 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
- 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
- Napisać skrypt sprawdzający wolne miejsce przy pomocy programu „du”. Jeżeli miejsca zacznie brakować skrypt ma wysłać maila do administratora.
- 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.
- 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.
- 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.
- 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.
- Skasowac z biezacego katalogu tyle najstarszych plikow, zeby pozostale zajmowaly mniej niz 100MB
- Napisać skrypt wykonujący kopie serwisu
- Napisać skrypt wykonujący kopie bazy danych na podstawie mysqldump
- Napisać skrypt monitorujący stan kolejki maili
- Napisać skrypt monitorujący stan działania UPS’a
- Napisać skrypt monitorujący zapełnienie dysków
- Napisać skrypt zarządzający zadaniami cron
- Napisać skrypt monitorujący stan baterii notebooka