780 likes | 972 Views
Zarządzanie zasobami komputera. Zestaw programów pozwalających człowiekowi i programom użytkowym na dostęp do zasobów komputera w wygodny i bezpieczny , efektywny i abstrakcyjny sposób.
E N D
Zarządzanie zasobami komputera. Zestaw programów pozwalających człowiekowi i programom użytkowym na dostęp do zasobów komputera w wygodny i bezpieczny, efektywny i abstrakcyjny sposób. Wygodny i bezpieczny – dane do drukarki są wysyłane przez jeden program, pozwalając na bezpieczne drukowanie przez wielu użytkowników równocześnie Abstrakcyjny – system operacyjny oferuje abstrakcyjne pojęcie pliku zwalniając programy i użytkowników z potrzeby znajomości fizycznego położenia danych na dysku (głowice, cylindry, sektory, rozkazy sterownika) Efektywny – system operacyjny zawiesza działanie programów czekających na ukończenie wejścia/wyjścia, oszczędzając czas procesora
Lata 50 – początki systemów operacyjnych, programy batch, minimalizacja przestojów między kolejnymi programami Lata 60 – pierwsze systemy operacyjne interaktywne. Kilku użytkowników korzystało z tego samego komputera równocześnie. Podział czasu Wiele różnych zespołów, wiele projektów, jednym z nich był Multics, koniec lat 60, general Electric, MIT, Bell Labs
Bell Labs opuścił zespół pracujący nad systemem Multics i stworzył własny system operacyjny, Unix. Początkowo rozprowadzany za darmo, zdobył dużą popularność w uniwersytetach Lata 90 – pozycja Unixa stała się mocna, ale został produktem komercyjnym i drogim. Tani, podobny do Unixa system Minix był ubogi, napisany w celach dydaktycznych. 386BSD, prekursor systemów NetBSD, FreeBSD, OpenBSD był niedojrzały i potrzebował mocnego sprzętu
UNICS 1969 Piąta edycja 1973 Szósta edycja 1976 Siódma edycja 1978 SYSV (5) 1983 BSD 1979 Solaris/SUNOS 5.x (SUN) AIX (IBM) IRIX (SGI) HP-UX (HP) Digital Unix (DEC) SCO UNIX (SCO) SUNOS 4.x (SUN) NextStep (NeXT) FreeBSD (Open Source) OpenBSD (Open Source) NetBSD (Open Source) Linux (Open Source) 1991
Użytkownicy Shell, GUI Programy systemowe Aplikacje Biblioteki systemowe Jądro (kernel) Sprzęt (procesor, pamięć, dyski itp.)
Jądro systemu – tworzy wirtualny komputer dla procesów użytkowych Interfejs do sprzętu (kart sieciowych, pamięci RAM, dysków itp) Ładowalne moduły do obsługi urządzeń, sieci, systemu plików itp. Pracuje w trybie uprzywilejowanym Cały kod i struktury danych w jednej przestrzeni adresowej Interfejs do bibliotek systemowych (system libraries)
Procesy użytkowe chcąc skorzystać z jadra wywołują funkcje bibliotek systemowych. Biblioteki systemowe nie działają w trybie uprzywilejowanym, wykonują te funkcje systemu, które tego trybu nie wymagają, na przykład buforowanie wejścia/wyjścia Pełnią też zadania, które nie mają odpowiedników w funkcjach jądra, np. sortowanie, operacje matematyczne Zapewniają zgodność ze standardami – POSIX, UNIX itp.
Aplikacje – np. Arkusz kalkulacyjny, edytor tekstu, przeglądarka internetowa Programy systemowe – dostarczane wraz z systemem operacyjnym, np. wyszukiwanie wzorca w plikach, konwersja formatu pliku, sortowanie Shell – tekstowy interfejs między człowiekiem a programami systemowymi i aplikacjami GUI (Graphical User Interface) graficzny interfejs między człowiekiem a programami systemowymi i aplikacjami
shell – sh, ksh, csh, tcsh, bash... • Programy obsługujące zewnętrzne polecenia systemowe – ls, ps, netstat, grep .... • Programy działające w tle – daemony • Kompilatory i biblioteki • Aplikacje użytkowników
Podajemy nazwę użytkownika • Podajemy hasło • System sprawdza poprawność nazwy i hasła (rozróżnia duże i małe litery!) • Wyświetla 'prompt” (interfejs tekstowy) lub uruchamia windows manager (interfejs graficzny) • Koniec pracy – exit (logout, ctrl-d) – interfejs znakowy, lub pozycja w menu (ikona) – interfejs graficzny
Po pierwszym zalogowaniu się, a potem okresowo, lub w miarę potrzeb zmieniamy swoje hasło: [test@kempny ~]$ passwd Changing password for user test. Changing password for test (current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. [test@kempny ~]$
Ogólna postać komend UNIX nazwa_komendy opcje cel_komendy Nazwa_komendy(zwykle krótka, ze względów historycznych) to polecenie wbudowane w shell, nazwa aplikacji lub nazwa programu systemowego opcjemodyfikują działanie komendy cel – obiekt, którego komenda dotyczy Przykład: ls -l /etc
Ćwiczenia • Zalogować się do systemu, zmienić hasło • Wydać poniższe komendy i zinterpretować ich wynik: cal 2000 cal 9 1752 echo Dzien dobry uname uname -a date pwd dmesg|more man dmesg ls /etc ls -l /etc uptime who whoami history id last w arch echo $SHELL echo ala\ ma\ {kota,psa} clear echo 5+4 echo 5+4|bc
System plików • Jedno drzewo zawierające pliki na wszystkich urządzeniach • Urządzenia (dyski, partycje, pamięci flash) dołączane do filesystemu w punktach montowania • Punkt montowania to kartoteka, z chwila zamontowania urządzenia dotychczasowa zawartość jest przesłaniana
System plików • Kartoteki • Zwykłe pliki • Link symboliczny, zwykły • Pipe • Pliki urządzeń – znakowych i blokowych
Filesystem Hierarchy Standard (FHS) 2.3 29 stycznia 2004
System plików - / (Root) • Musi zawierać wszystko, co potrzebne do uruchomienia systemu, jego odtworzenia lub naprawienia • Nie powinien być duży • Musi umożliwić zamontowanie pozostałych systemów plików
System plików - /bin • Zawiera podstawowe polecenia używane przez administratora i wszystkich użytkowników • Musi zawierać polecenia niezbędne do zamontowania filesytemów
System plików - /boot • Zawiera wszystko, co niezbędne do uruchomienia systemu, dane potrzebne zanim jądro systemu rozpocznie działanie • Jadro systemu może być w kartotece /boot lub w kartotece /
System plików - /dev • Zawiera pliki specjalne lub pliki urządzeń • Jeśli w kartotece /dev możliwe jest tworzenie nowych plików urządzeń, musi zawierać polecenie MAKEDEV do ich tworzenia
System plików - /etc • Zawiera pliki konfiguracyjne • Nie może zawierać programów binarnych • Zawiera podkartoteki na konfiguracje aplikacji
System plików - /home • Zawiera pliki użytkowników • Nie musi występować w systemie
System plików - /lib • Zawiera podstawowe biblioteki systemu • Musi występować w systemie • Musi zawierać zbiory: • libc.so.* podstawowa biblioteka C • ln (linker/loader)
System plików - /media • Zawiera punkty montowania dla mediów wymiennych, CDROM, dyskietki, taśmy itp. System plików - /mnt • Zawiera punkty montowania dla filesystemów montowanych tymczasowo
System plików - /sbin • Programy używane przez administratora systemu • Inne lokalizacje tych programów - /usr/sbin, /usr/local/sbin
System plików - /tmp • Kartoteka na zbiory tymczasowe • Dostępna do zapisu dla wszystkich użytkowników • Podczas przeładowania systemu jej zawartość może i powinna być usunięta • Alternatywnym miejscem dla zbiorów tymczasowych jest /var/tmp – zawartość tej kartoteki nie jest kasowana przy przeładowaniu systemu
System plików - /usr • Kartoteka na pozostałe zbiory systemu • Nie powinna być używana do zapisu przez użytkowników i aplikacje • Podkartoteki bin, sbin, share, lib, include, local • Może zawierać inne podkartoteki, np, X11R6, src
System plików - /var • Kartoteka na zmieniające się pliki, np. logi systemowe, kolejki drukarek, kolejki poczty • Zawiera podkartoteki cache, lib, local, lock, log, opt, run, spool, tmp • Może zawierać opcjonalnie np. mail, games
System plików - /proc • Opcjonalny, lecz często występujący w systemach Unix • Zawiera informacje o stanie systemu – procesach, urządzeniach, pamięci, przerwaniach itp. • Wirtualny, tworzony podczas pracy systemu. • Poprzez modyfikację zbiorów w tym systemie plików można zmienić działanie systemu, np. włączyć routing
pwd - podaj bieżącą kartotekę ls - wyświetl zawartość kartoteki ls ścieżka - wyświetl zawartość wskazanej kartoteki ls -a -l – wszystkie pliki, ze szczegółami cd scieżka – zmień kartotekę (bez ścieżki – do kartoteki 'home') mkdir nazwa – utwórz kartotekę rmdir nazwa – usuń kartotekę (pustą) cp co gdzie – kopiuj plik(i) kartotekę(i) mv co gdzie – przenieś lub zmień nazwę pliku (kartoteki)
rm plik(i) – usuń plik(i) (Uwaga! Nie da się odzyskać!) rm -i pliki – usuń pliki pytając przy każdym, czy na pewno rm -rf pliki – usuń pliki i kartoteki z podkartotekami, nie pytaj o nic touch nazwa – utwórz pusty plik o podanej nazwie (jeśli istnieje, zmień czas dostępu i modyfikacji na bieżący) pushd ścieżka - przejdź do wskazanej kartoteki, powrót komendą popd (nie każdy shell) df – wyświetla zajętość filesystemów du – wyświetla wielkość podkartotek
ln plik nazwa_linku – tworzy twardy link do wskazanego pliku ln -s plik nazwa_linku – tworzy miękki link do wskazanego pliku Twardy link tworzy nowy wpis w kartotece wskazujący na zbiór, musi wskazywać na istniejący plik w tym samym filesystemie, usunięcie oryginału nie spowoduje usunięcia linku
? * - zastępują jeden i wiele znaków w nazwie [abxeo3-8] zastępuje pojedynczy znak jednym z wymienionych w nawiasach(znak '-' podaje przedział znaków) {ala,ola}.txt – iloczyn kartezjański łańcuchów w nawiasach . .. - bieżąca kartoteka, nadrzędna kartoteka
Pewne znaki mają znaczenia specjalne. Aby to znaczenie specjalne wyłączyć, należy: poprzedzić go znakiem \ ująć tekst w pojedynczych apostrofach ' ' - wyłącza specjalne znaczenie wszystkich znaków ująć tekst w podwójnych apostrofach ” ” - wyłącza specjalne znaczenie większości znaków Uwaga, apostrofy ` ` działają inaczej!
Ćwiczenia. Wykonaj i zaobserwuj działanie: [kempny@kempny ~]$ cat -> akuku to jest zawartosc zbioru akuku [kempny@kempny ~]$ cat akuku [kempny@kempny ~]$ cd tmp [kempny@kempny tmp]$ ln ../akuku kopia [kempny@kempny tmp]$ ls -l ../akuku kopia [kempny@kempny tmp]$ cat kopia [kempny@kempny tmp]$ cat ->> kopia a to dopisane do kopia
[kempny@kempny tmp]$ cat kopia [kempny@kempny tmp]$ cat ../akuku [kempny@kempny tmp]$ ls -l ../akuku kopia [kempny@kempny tmp]$ rm ../akuku [kempny@kempny tmp]$ ls -l [kempny@kempny tmp]$ cat kopia [kempny@kempny tmp]$ Wykonaj to samo dla linku miękkiego
[kempny@kempny tmp]$ cp /etc/passwd . [kempny@kempny tmp]$ ls [kempny@kempny tmp]$ mv passwd .. [kempny@kempny tmp]$ ls [kempny@kempny tmp]$ ls .. [kempny@kempny tmp]$ mv ../passwd . [kempny@kempny tmp]$ mv passwd haselka [kempny@kempny tmp]$ ls [kempny@kempny tmp]$rm haselka
Utwórz dwie kartoteki o nazwach kot i pies W kartotece kot utwórz pusty plik o nazwie mysz Skopiuj kartotekę kot z jej zawartością do wnętrza kartoteki pies Komendą ls -laR wyświetl zawartości wszystkich podkartotek Usuń utworzone kartoteki z ich zawartością Utwórz zbiór o nazwie #gwiazdy, następnie usuń go Korzystając z komendy man wypróbuj działanie różnych opcji komendy ls
[kempny@kempny tmp]$ touch ala{1,2,3,4} [kempny@kempny tmp]$ ls [kempny@kempny tmp]$ touch ala{1,2,3,4}nowe [kempny@kempny tmp]$ ls [kempny@kempny tmp]$ ls ala[12] [kempny@kempny tmp]$ ls ala? [kempny@kempny tmp]$ ls ala?n* [kempny@kempny tmp]$ ls ala[23]n* [kempny@kempny tmp]$ ls ala[1-3] [kempny@kempny tmp]$ ls ala[1-24]
System plików - prawa do plików • Prawo do zapisu, odczytu, wykonania • Grupy praw dla właściciela, grupy i pozostałych użytkowników • Zapisywane często ósemkowo, kolejne bity oznaczają kolejno czytanie, zapis, wykonanie. Kolejne cyfry ósemkowe odnoszą się do właściciela, grupy i pozostałych. Na przykład754 oznacza:7 – czytanie, zapis i wykonanie dla właściciela5 – czytanie i wykonanie dla grupy4 – czytanie dla pozostałych
Sticky bit • Dla plików dawniej nakazywał przechowywanie w swap, obecnie w Linuxie ignorowany • Dla kartotek – kasować i zmieniać nazwę zbiorów w nich może tylko root lub właściciel. Używane np. w kartotece /tmp
set-UID set-GID • uruchomienie pliku przez zwykłego użytkownika spowoduje nadanie procesowi praw jego właściciela (grupy) • Niezbędne dla niektórych programów, np. passwd – modyfikuje shadow • Niebezpieczne, jeśli użytkownik podstawi własny program (np. shell) z set-UID
Kolejne bity: 4 set-UID 2 set-GID 1 sticky bit 4 odczyt – właściciel 2 zapis – właściciel 1 wykonywanie – właściciel 4 odczyt – grupa 2 zapis – grupa 1 wykonywanie – grupa 4 odczyt – wszyscy 2 zapis – wszyscy 1 wykonywanie - wszyscy
Chmod maska plik(i) Inny zapis: chmod [ugoa...][[+-=][rwx] u – user – właściciel g- group – grupa o, a other, all – pozostali r, w, x – odczyt, zapis, wykonywanie (dostęp do kartoteki) + dodaj - usuń = usuń wszystkie i pozostaw tylko te podane
file nazwa –wyświetla informacje o pliku head, tail plik – wyświetla poczatek/koniec pliku tail -f plik – wyświetla ciągle koniec pliku (dodawane linie) more plik – wyświetla zawartość zbioru tekstowego ekran po ekranie cat plik plik plik - wyświetla cały zbiór(y)(również binarne, może sklejać zbiory) od plik – wyświetla ósemkowo (-x – szesnastkowo, -c znakowo) zawartość pliku binarnego
find kartoteka -name nazwa –wyszukuje plik o podanej nazwie począwszy od wskazanej kartoteki Na przykład: find /home/kempny/ -name "*pdf" -exec ls -l {} \; which plik – wyszukuje położenie pliku komendy whereis komenda – wyszukuje położenie pliku binarnego, źródłowego i strony man komendy
grep wzorzec plik –wyszukuje w pliku (plikach wskazany wzorzec Na przykład: grep kot *txt wyszuka słowo kot we wszystkich plikach o nazwach kończących się literami txt Pożyteczne opcje: -v – działanie odwrotne, znajdzie linie nie zawierające wzorca -i – ignoruj duże/małe litery -c – wyświetli tylko liczbę wystąpień wzorca
wc – oblicz liczbę wierszy, wyrazów i znaków w zbiorze uniq – pomiń powtarzające się wiersze uniq -c – jak wyżej, ale podaj liczbę wystąpień sort -k pos1[pos2] sortuje linie według klucza od znaku pos1 do pos2 włącznie (liczone od 1) Na przykład: sort input.txt | uniq > output.txt sort input.txt | uniq | wc
expand – zamień znaki tab na spacje colrm [startcol [endcol]] – usuń znaki w zbiorze od kolumny startcol do endcol, liczone od 1 ed – edytor liniowy, np. do zamiany łańcuchów vi – edytor ekranowy, makropolecenia do modyfikowania zawartości zbioru
Kopie bezpieczeństwa systemu Dump – składuje filesystem lub jego część na taśmę (opcjonalnie do zbioru lub pipe) Poziomy 0-9. 0 - składuj wszystkie pliki, n<>0 składuj tylko te pliki, które zostały utworzone lub zmienione od ostatniego dump niższego poziomu Zbiór /etc/dumpdates zawiera informacje które filesystemy, kiedy i z jakim poziomem były składowane Typowe użycie dump -0u -f /dev/st0 /usr