SPIS TREŚCI 1. WIADOMOŚCI OGÓLNE... 3 2. ZARZĄDZANIE SYSTEMEM LINUX... 3 3. WIELODOSTĘPNOŚĆ... 4 4. SYSTEMY PLIKÓW I STRUKTURA FOLDERÓW... 5 5. UZYSKIWANIE POMOCY SYSTEMOWEJ... 6 6. ZARZĄDZANIE PLIKAMI I FOLDERAMI... 7 7. ZARZĄDZANIE PAKIETAMI... 8 8. UPRAWNIENIA DO PLIKÓW I FOLDERÓW... 8 9. PRZEKIEROWANIE STRUMIENIA DANYCH... 11 PRZYKŁAD 9.1. PRZEŁĄCZANIE STANDARDOWEGO WEJŚCIA... 12 PRZYKŁAD 9.2. PRZEŁĄCZANIE STANDARDOWEGO WYJŚCIA... 12 PRZYKŁAD 9.3. PRZEŁĄCZANIE STANDARDOWEGO WYJŚCIA BŁĘDÓW... 13 10. POTOKOWANIE STRUMIENIA DANYCH... 14 11. ARCHIWIZACJA I KOMPRESJA ZBIORÓW... 15 PRZYKŁAD 11.1 TWORZENIE I ROZPAKOWYWANIE ARCHIWUM... 15 PRZYKŁAD 11.2 KOMPRESJA I DEKOMPRESJA ARCHIWUM.TAR... 16 PRZYKŁAD 11.3 KOMPRESJA I DEKOMPRESJA ZAWARTOŚCI FOLDERU... 16 PRZYKŁAD 11.4 KOMPRESJA I DEKOMPRESJA PODCZAS TWORZENIA I ROZPAKOWYWANIA ARCHIWUM... 17 12. SKRYPTY POWŁOKI... 18 PRZYKŁAD 12.1 PRZEDSTAW SIĘ... 19 PRZYKŁAD 12.2 ŚRODOWISKO UŻYTKOWNIKA... 19 PRZYKŁAD 12.3 NAZWA MIESIĄCA... 20 PRZYKŁAD 12.4 LICZBY OD 1 DO 10... 20 PRZYKŁAD 12.5 WYSZUKIWANIE PLIKÓW W FOLDERZE... 20 PRZYKŁAD 12.6 LISTA WYBORU... 20 PRZYKŁAD 12.7 LICZY NATURALNE OD 1 DO N... 20 PRZYKŁAD 12.8 LICZBY PARZYSTE... 21 2
1. Wiadomości ogólne Linux jest systemem wielozadaniowym, co umożliwia mu wykonywanie więcej niż jednego procesu jednocześnie. Za realizację wielozadaniowości odpowiedzialne jest jądro systemu operacyjnego. Wielozadaniowość zapewniona jest między innymi przez program zwany planistą, który realizuje algorytm szeregowania zadań w kolejce do przyznania czasu procesora. Linux może wykorzystywać wiele procesorów. Gdy system ma mniej dostępnych procesorów niż zadań do wykonania, czas działania procesora jest dzielony pomiędzy wszystkie zadania. 2. Zarządzanie systemem Linux Większość systemów Linux oferuje wywłaszczanie, które polega na przerwaniu wykonywania procesu, odebraniu mu procesora i przekazaniu sterowania do planisty. W systemach bez wywłaszczania procesy muszą same dbać o sprawiedliwy podział czasu procesora. Do wyświetlenia listy uruchomionych procesów służy polecenie ps. Polecenie wyświetla tylko te procesy, których właścicielem jest użytkownik. Znaleźć można następujące informacje: PID identyfikator procesu TTY identyfikator konsoli z której proces został uruchomiony TIME- czas procesora wykorzystywany do tej pory CMD polecenie służące do uruchamiania procesu 3
Do wyświetlenia listy wszystkich procesów używamy polecenia ps A Do usuwania procesów z systemu służy polecenie kill identyfikator_pid np. kill 3016 Polecenie usuwa proces w sposób bezpieczny tzn. zamyka otwarte pliki i zwalnia obszary pamięci. Jeżeli nie jest możliwe zamknięcie procesu za pomocą powyższego polecenia to należy dopisać po słowie kill -9. 3. Wielodostępność Linux jest systemem wielodostępnym, oznacza to, że wielu użytkowników może z niego jednocześnie korzystać. Każdy użytkownik ma przydzielone zasoby, do których nikt oprócz niego nie ma dostępu, chyba że je udostępnił (bądź posiadamy uprawnienia administratora). O uprawnieniach do korzystania z zasobów decyduje administrator. Aby sprawdzić z jakiego w danym momencie konta korzystam wystarczy wpisać polecenie whoami, natomiast aby sprawdzić, kto w danym momencie jest zalogowany do systemy używamy polecenia who. Zalogowani użytkownicy mogą wysyłać do siebie wiadomości korzystając z polecenia write nazwa_użytkownika Treść_wiadomości 4
Po skończeniu wpisywania wiadomości należy wcisnąć kombinację [Ctrl]+[d]. Aby wysłać wiadomość do wszystkich zamiast polecenia write używamy polecenia wall analogicznie jak wyżej. 4. Systemy plików i struktura folderów Podczas instalacji Linuxa tworzona jest struktura folderów na dysku bądź dyskach zainstalowanych w komputerze. Standardowe foldery tworzone podczas instalacji to: / - folder główny /bin - przechowywane w nim są standardowe polecenia systemu Linux /dev przechowuje pliki reprezentujące punkty dostępu do urządzeń systemowych, np. napędy CD/DVD /etc przechowuje administracyjne pliki konfiguracyjne /home przechowuje foldery domowe użytkowników /mnt odpowiada za lokalizację montowanych urządzeń, takich jak systemy plików, urządzenia wymienne /root folder domowy administratora systemu /sbin przechowuje polecenia służące do administrowania systemem oraz uruchamiające procesy /tmp przechowuje pliki tymczasowe aplikacji /usr przechowuje dokumentacje systemu i zainstalowane aplikacje /boot przechowuje jądro systemu /var przechowuje foldery danych różnych aplikacji, serwera FTP lub serwera WWW System plików ( system systemów plików ) w Linuxie można traktować jako pojedyncze drzewo. Jeśli dołączymy do systemu plików jakiś dodatkowy nośnik danych to jego system plików zostanie doczepiony do systemu głównego. Miejsce doczepiania nazywane jest punktem montowania. Aby wyświetlić informacje o wszystkich zamontowanych systemach plików używamy polecenia df. Do zamontowania systemu plików stosujemy polecenie mount identyfikator_urządzenia punkt_montowania np.: mount /dev/sdb1 /mnt natomiast aby odmontować system plików wystarczy wpisać polecenie umount punkt_montowania lub umount identyfikator_urządzenia Można również wzbogacić polecenie mount o parametr -t pozwalający podać system plików montowanego urządzenia. Polecenie przyjmuje wtedy postać mount -t system_plików identyfikator_urządzenia punkt_montowania Najczęściej używane systemy plików to: msdos - FAT12 5
vfat - FAT ntfs - NTFS iso9660 system mcd/dvd Identyfikatory urządzenia: /dev/fd0 stacja dyskietek /dev/cdrom napęd CD/DVD /dev/hda1 partycja na dysku ATA /dev/sda1 partycja na dysku SATA lub SCSI /dev/sdb1 pamięć flash Uwagi! Nie można odmontować systemu plików aktualnie używanego. Montowanie możliwe jest dla użytkownika z uprawnieniami root. 5. Uzyskiwanie pomocy systemowej System Linux dysponuje systemem pomocy, która dostępna jest dla każdego użytkownika podczas pracy. Aby skorzystać z pomocy wydajemy polecenie man nazwa_polecenia np. man kill 6
Wielkość liter we wpisywanych parametrach, nazwach pleceń, nazwach plików i folderów ma znaczenie. Polecenia wpisujemy zawsze małymi literami. Aby wywołać ostatnio używane polecenia wystarczy użyć strzałek do góry i w dół. Jeśli początkowa część polecenia, którego chcemy użyć jest unikatowa to można automatycznie uzupełnić nazwę tego polecenia za pomocą [Tab]. Zasada ta dotyczy również plików i folderów. Aby zakończyć działania polecenia wystarczy wcisnąć kombinację klawiszy [Ctrl]+[C] 6. Zarządzanie plikami i folderami Najczęściej używane polecenia do zarządzania plikami i folderami to (przykłady wykonywane z lokalizacji /home/marcin): mkdir ścieżka/nazwa folderu utworzenie folderu o np. mkdir Pulpit/nowy rmdir /nazwa_folderu usunięcie pustego folderu o np. rmdir Pulpit/nowy cp ścieżka/nazwa_pliku ścieżka2 kopiowanie pliku o np. cp Pulpit/ddd.tar /home/marcin o np. cp ddd.tar Pulpit mv ścieżka/nazwa_pliku ścieżka2 przenoszenie pliku o np. mv Pulpit/ddd.tar /home/marcin o np. mv Pulpit/ddd.tar. (przenoszenie do folderu bieżącego) o np. mv Pulpit/ddd.tar ~ (przenoszenie do folderu domowego) o np. mv ddd.tar Pulpit rm nazwa_pliku usuwanie pliku o np. rm Pulpit/ddd.tar o np. rm ddd.tar o np. rm /home/marcin/ddd.tar (polecenie wykonane z dowolnej lokalizacji) rm -r nazwa_katalogu rekurencyjne usuwanie katalogu z zawartością rm -fr nazwa_katalogu usuwanie katalogu z zawartością bez potwierdzenia cd ścieżka zmiana katalogu (przechodzenie pomiędzy katalogami) cd.. - przejście do katalogu nadrzędnego (wstecz) cd / - przejście do folderu / 7
pwd wyświetlenie aktualnej lokalizacji (katalogu) ls wyświetlenie listy plików i folderów w bieżącym folderze ls -la wyświetlenie listy plików i folderów z atrybutami i uprawnieniami w bieżącym folderze ls -a wyświetlenie listy wraz z plikami ukrytymi touch plik.txt tworzenie pliku tekstowego cat plik.txt wyświetlenie zawartości pliku find przeszukiwane_miejsce -name nazwa_pliku (lub *.rozszerzenie_pliku) szukanie plików o np. find Pulpit -name *.txt 7. Zarządzanie pakietami sudo apt-cache search nazwa_pakietu wyszukiwanie pakietów sudo apt-get install nazwa_pakietu instalacja pakietu sudo apt-get remove nazwa_pakietu usuwanie pakietu sudo dpkg -i nazwa_pakietu.deb instalowanie pakietów Debiana 8. Uprawnienia do plików i folderów Każdy użytkownik nie będący administratorem Linuxa ma dostęp tylko do niektórych plików. Dzięki temu nikt nie może zmodyfikować zasobów należących do innego użytkownika. Do każdego pliku jest przypisany identyfikator właściciela u, który stworzył ten plik, oraz grupy g, czyli zbioru użytkowników, którzy mają do tego pliku uprawnienia, w przeciwieństwie do pozostałych o. Istnieją trzy podstawowe prawa dostępu do pliku r prawo do odczytu w prawo do zapisu x prawo do uruchomienia Prawa te są nadawane niezależnie właścicielowi pliku, grupie, do której użytkownik należy i pozostałym użytkownikom. Aby dowiedzieć się jakie uprawnienia są przypisane dla poszczególnych plików, używa się polecenia ls l (lub ls la) Każdy plik i folder w systemie Linux posiada 10 bitów protekcji w formacie drwxrwxrwx, gdzie: bit 1 identyfikacja rodzaju pliku: o d folder 8
o - - plik o l link do pliku bit 2-4 uprawnienia właściciela pliku bit 5-7 uprawnienia grupy, do której należy użytkownik bit 8-10 uprawnienia pozostałych użytkowników Kreska - oznacza brak uprawnienia Administrowanie uprawnieniami możliwe jest w oparciu o polecenie chmod, np. chmod go+w zrzut_ekranu-5.png Powyższe polecenie do pliku zrzut_ekranu-5.png dodaje (+) uprawnienia zapisu (w) dla grupy (g) i pozostałych użytkowników (o). Każde z uprawnień ma przypisany odpowiedni parametr cyfrowy: r prawo do odczytu 4 w prawo do zapisu 2 x prawo do uruchomienia 1 - - brak praw 0 Dodając do siebie odpowiednie parametry zestawu trzech praw, uprawnienia możemy przedstawić za pomocą jednej cyfry, np.: --- 0 brak praw r-- 4 prawo do odczytu rw- 6 prawo do zapisu i odczytu rwx 7 prawo do zapisu, odczytu i uruchomienia r-x 5 prawo do odczytu i uruchomienia -w- 2 prawo do zapisu --x 1 prawo do uruchomienia 9
Przykładowo polecenie chmod 642 zrzut_ekranu.png spowoduje w pliku zrzut_ekranu.png przydzielenie uprawnień: zapisu i odczytu (rw-) dla właściciela pliku odczyt (r--) dla grupy,do której należy użytkownik zapis (-w-) dla pozostałych użytkowników Właścicielem każdego pliku i folderu jest użytkownik ((s)twórca) i grupa użytkowników. Przenieść własność zbioru na innego użytkownika może tylko administrator. Do zmiany właściciela używamy polecenia postaci chown użytkownik:grupa plik Przykładowo polecenie chown student:uczniowie zrzut_ekranu-1.png spowoduje zmianę właściciela pliku zrzut_ekranu-1.png na student i grupy na uczniowie. 10
9. Przekierowanie strumienia danych Każdy uruchomiony w Linuxie proces pobiera skądś dane, wysyła wyniki swojego działania i komunikaty o błędach. Dane przesyłane są między urządzeniami w postaci strumieni. Rodzaje strumieni danych: stdin standardowe wejście, z którego pobiera dane (domyślnie jest to klawiatura) stdout standarodwe wyjście, z którego wysyłany jest wynik działania procesu (domyślnie jest to ekran) stderr standardowe wyjście błędów, gdzie trafiają wszystkie komunikaty o błędach (domyślnie ekran) 11
LInux wszystkie urządzenia traktuje jak pliki, niezależnie od tego, czy jest to plik, folder, urządzenie blokowe (klawiatura, ekran), czy strumień. Powłoka Linuxa identyfikuje je za pomocą przyporządkowanych im liczb całkowitych, tak zwanych deskryptorów plików: 0 plik, z którego proces pobiera dane (stdin) 1 plik, do którego proces wysyła dane (stout) 2 plik, do którego trafiają komunikaty o błędach (stderr) Za pomocą operatorów przypisania można manipulować strumieniami poprzez przypisanie deskryptorów 0,1,2 innym plikom niż tym, które reprezentują klawiaturę i ekran. Do przekierowania służą trzy operatory: < - umożliwia przekierowanie zawartości pliku do standardowego wyjścia > - umożliwia przekierowanie standardowego wyjścia danych do pliku, jeżeli plik istnieje to zostanie nadpisana jego zawartość >> - umożliwia przekierowanie standardowego wyjścia danych do pliku, jeżeli plik istnieje to dane zostaną dopisane na końcu pliku Przykład 9.1. Przełączanie standardowego wejścia Jako standardowe wejście użyjemy pliku komunikat.txt. Zawartość pliku komunikat.txt: placki kopytka naleśniki Użyjemy polecenia sort < komunikat.txt Powyższe polecenie jako standardowe wejście użyje pliku komunikat, posortuje zawartość pliku i wyświetli rezultat na ekranie. Przykład 9.2. Przełączanie standardowego wyjścia Używając polecenia ls la > /home/marcin > /home/marcin/pulpit/wynik 12
lista plików i folderów znajdujących się w folderze marcin zostanie zapisana w pliku wynik znajdującym się na Pulpicie. Jeśli plik nie istniał, to zostanie utworzony. Jeśli natomiast znajdował się już na Pulpicie, to jego zawartośc zostanie usunięta i nadpisana. Aby nie usuwać zawartości pliku należy użyć polecenia ls la >> /home/marcin > /home/marcin/pulpit/wynik Przykład 9.3. Przełączanie standardowego wyjścia błędów Użyjemy błędnego polecenia ls y 2 > /home/marcin/pulpit/error 13
Komunikat o błędach składni polecenia zostanie przesłany do pliku error znajdującym się na Pulpicie. Podobnie jak powyżej, jeśli plik nie istnieje do zostanie utworzony. Aby nie usuwać zawartości istniejącego pliku (tylko dopisać nową treść na jego końcu) należy użyć polecenia 10. Potokowanie strumienia danych ls y 2> /home/marcin/pulpit/error Zastosowanie znaku pozwala na łączenie wyjścia jednego z polecenia z wejściem innego polecenia. Dane wygenerowane za pomocą pierwszego polecenia przekazane zostaną na wejście następnego polecenia i po przetworzeniu przekazane na wejście kolejnego lub na ekran. Tego typu przetwarzanie danych nazywane jest potokowaniem. Do najczęściej wykorzystywanych poleceń w potokach należą: more służy do przeglądania tekstu strona po stronie, jeden ekran naraz, przewijanie stron jest możliwe tylko do przodu o np. ls -la more less podobnie jak more, przewijanie możliwe jest w obu kierunkach o np. ls -ls less cat polecenie wyświetla na ekranie zawartość pliku tekstowego o np. cat plik.txt less grep poszukuje wskazany strumień danych, szukając linii zawierających ciąg znaków pasujących do podanego wzorca o np. cat plik.txt grep slowo wc wypisuje liczbę bajtów, słów lub linii w plikach o np. ls -la wc -l Przykładowym potokiem danych jest polecenie ls -la grep zrzut_ekranu wc l Polecenie kolejno: generuje listę plików i folderów w obecnej lokalizacji (ale jej nie wypisuje) przeszukuje wygenerowaną listę w poszukiwaniu ciągu znaków zrzut_ekranu 14
zlicza ilość linii zawierających wskazany ciąg znaków 11. Archiwizacja i kompresja zbiorów Podstawowym programem do obsługi archiwów w Linuxie jest program tar. Program tar domyślnie tworzy archiwum rekurencyjnie, tzn. z podfolderami, umieszczając w nim wszystko, co znajdzie się we wskazanym folderze (łącznie z ukrytymi plikami i folderami). Składnia polecenia jest następująca tar opcje nazwa_archiwum plik Najczęściej używane opcje to c tworzenie archiwum v podczas tworzenia archiwum wyświetlane będą nazwy zbiorów f użycie wskazanego pliku jako archiwum x wyodrębnienie zbiorów z archiwum Przykład 11.1 Tworzenie i rozpakowywanie archiwum tar -cvf archiwum.tar 1.png 2.png 3.png mkdir rozpakowane cp archiwum.tar rozpakowane cd rozpakowane tar -xvf archiwum.tar 15
Powyższy ciąg poleceń kolejno: tworzy archiwum o nazwie archiwum.tar zawierające pliki 1.png, 2.png, 3.png tworzy folder o nazwie rozpakowane kopiuje archiwum.tar do folderu rozpakowane przechodzi do folderu rozpakowane wyodrębnia pliki z archiwum.tar Najczęściej używanym programem do kompresji zbiorów jest gzip. Podczas kompresji plik oryginalny jest usuwany z systemu. Przykład 11.2 Kompresja i dekompresja archiwum.tar gzip archiwum.tar gunzip archiwum.tar.gz Pierwsze polecenie kompresuje archiwum.tar, drugie dekompresuje skompresowany plik archiwum.tar.gz. Kompresji możemy poddać całe foldery wraz z podfolderami. Podczas kompresji folderu każdy plik kompresowany jest oddzielnie. Przykład 11.3 Kompresja i dekompresja zawartości folderu gzip -r rozpakowane gunzip -r rozpakowane kompresja zawartości folderu rozpakowane dekompresja zawartości folderu rozpakowane 16
Przykład 11.4 Kompresja i dekompresja podczas tworzenia i rozpakowywania archiwum tar -czvf arch.tgz 1.png 2.png cp arch.tgz rozpakowane2 tar -xzvf arch.tgz tworzenie skompresowanego archiwum arch.tgz kopiowanie archiwum do folderu rozpakowane2 rozpakowywanie skompresowanego archiwum arch.tgz 17
12. Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których zapisane są polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby uruchomić skrypt należy: zawartość zapisać w pliku z rozszerzeniem.bat nadać uprawnienia do wykonywania tego pliku (x) uruchomić skrypt poleceniem./nazwa_pliku.bat Przykładowy skrypt może składać się z następujących poleceń: #!/bin/bash #Pierwszy skrypt powłoki echo Witaj świecie Linia pierwsza wskazuje na powłokę, która będzie wykonywać skrypt. Znak # oznacza komentarz, natomiast polecenie echo powoduje wydrukowanie komunikatu na ekranie. Najczęściej używane polecenia w skryptach: echo wyświetla komunikat na ekranie read czyta ze standardowego wejścia pojedynczy wiersz zmienne programowe zmienne definiowane samodzielnie przez użytkownika, do zmiennej odwołujemy się poprzez podanie jej nazwy poprzedzonej znakiem $ zmienne specjalne zmienne powłoki, które są udostępniane użytkownikowi tylko (z reguły) do odczytu, np. o $0 nazwa bieżącego skryptu lub powłoki o $$ - PID procesu bieżącej powłoki zmienne środowiskowe definiują środowisko użytkownika, np. o $HOME ścieżka do folderu domowego o $USER login użytkownika o $HOSTNAME nazwa hosta o $OSTYPE rodzaj systemu operacyjnego instrukcja warunkowa if o składnia if warunek then polecenie1 else polecenie2 fi test służy do sprawdzania warunków, o składnia test wyrazenie1 operator wyrazenie2 lub [wyrażenie1 operator wyrażenie2] o przykładowe operatory -e plik istnieje == - równość wyrażeń!= - różność wyrażeń -d folder istnieje -r plik do odczytu -w plik do zapisu -x plik wykonywalny -lt mniejsze niż 18
-gt większe niż -le mniejsze lub równe -ge większe lub równe instrukcja case o składnia case zmienna in wartosc1 ) polecenie1;; wartosc2 ) polecenie2;; *) polecenie_domyslne esac pętla for o składnia for zmienna in lista do polecenie done pętla select generuje numerowaną listę wyboru o składnia zmienna in lista do polecenie done pętla while o składnia while warunek do polecenie done pętla until o składnia until warunek do polecenie done Przykład 12.1 Przedstaw się #!/bin/bash echo "Podaj imie: " read imie echo "Podaj nazwisko: " read nazwisko echo "Nazywam sie $imie $nazwisko" Przykład 12.2 Środowisko użytkownika #!/bin/bash echo $USER echo $HOME echo $HOSTNAME echo $OSTYPE echo $0 echo $$ 19
Przykład 12.3 Nazwa miesiąca #!/bin/bash echo "Podaj liczbe miesiaca: " read m case "$m" in "1") echo "Styczeń";; "2") echo "Luty";; "3") echo "Marzec";; "4") echo "Kwiecień";; "5") echo "Maj";; "6") echo "Czerwiec";; "7") echo "Lipiec";; "8") echo "Sierpień";; "9") echo "Wrzesień";; "10") echo "Październik";; "11") echo "Listopad";; "12") echo "Grudzień";; *) echo "Wybrano złą liczbę" esac Przykład 12.4 Liczby od 1 do 10 #!/bin/bash for i in 1 2 3 4 5 6 7 8 9 10 do echo "$i" done Przykład 12.5 Wyszukiwanie plików w folderze #!/bin/bash for n in *.bat do echo $n done Przykład 12.6 Lista wyboru #!/bin/bash echo "Co wybierasz? " select n in x y z quit do case $n in "x") echo "Wybrałeś x";; "y") echo "Wybrałeś y";; "z") echo "Wybrałeś z";; "quit") exit;; *) echo "Zły wybór" esac break done Przykład 12.7 Liczy naturalne od 1 do n #!/bin/bash i=1 20
echo "Podaj liczbe: " read n; while test $i -le $n do echo $i i=$[i+1] done Przykład 12.8 Liczby parzyste #!/bin/bash i=1 until test $i == 2 do k=2 echo "Podaj liczbe: " read n while test $k -le $n do echo $k k=$[k+2] done echo "Czy chcesz wygenerować nowe liczby? (t/n)" read wybor case $wybor in "t") i=1;; "n") i=2;; esac done 21