7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 Plan zajęć 1. Programy i ich uruchamianie w systemie Linux, strumienie, potoki. 2. Procesy : monitorowanie procesów, procesy pierwszo- i drugoplanowe, komunikacja z procesami, wysyłanie sygnałów. 3. Aliasy 4. Zmienne środowiskowe
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 3 Plik program, uruchomienie programu [student@lcme14 student]$ ls -l /pub/programy wyświetlenie zawartości katalogu /pub/programy -rw-r--r-- 1 kubzdela people 1450 paz 11 12:04 opis -rwxr-xr-x 1 kubzdela people 1450 paz 11 12:02 prog1 -rwxr-xr-x 1 kubzdela people 1450 paz 11 12:03 prog2 -rwxr-xr-x 1 kubzdela people 1450 paz 11 12:03 prog3 -rwxr-xr-x 1 kubzdela people 1450 paz 11 12:04 prog4 Rozwijanie nazw przez system Program do wykonania
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 4 Plik program, uruchomienie programu [student@lcme14 student]$ /pub/programy/prog1 3,14159 uruchomienie programu prog1(oblicza wartość liczby π) [student@lcme14 student]$ /pub/programy/prog2 podaj x= 4 16.0 uruchomienie programu prog2 (oblicza kwadrat podanej liczby) [student@lcme14 student]$ cd /pub/programy [student@lcme14 programy]$./prog2 [student@lcme14 programy]$ cd lub
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 5 Przetwarzanie danych, wejście wyjście, strumienie Strumień - ciąg bajtów, który może być przesyłany miedzy aplikacjami (poleceniami), przesyłany do pliku lub na terminal, pobierany z pliku lub terminala, itd.
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 6 Przetwarzanie danych, wejście wyjście, strumienie [student@lcme14 student]$ /pub/programy/prog1 > ~/liczba_pi wykonanie programu prog1, przekierowanie strumienia wyjściowego - wynik zapisany do pliku liczba_pi [student@lcme14 student]$ more ~/liczba_pi 3.14159 wyświetlenie zawartości pliku liczba_pi [student@lcme14 student]$ /pub/programy/prog2 < ~/liczba_pi wykonanie programu prog2, przekierowanie strumienia wejściowego - dane wejściowe (liczba której ma zostać obliczony kwadrat) zostają pobrane z pliku liczba_pi podaj x= 9.86959
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 7 Przetwarzanie danych, wejście wyjście, strumienie [student@lcme14 student]$ cd [student@lcme14 student]$ /pub/programy/prog1 >> liczba_pi wykonanie programu prog1, wynik dopisany do pliku liczba_pi [student@lcme14 student]$ more liczba_pi 3.14159 3.14159 wyświetlenie zawartości pliku liczba_pi
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 8 Przetwarzanie danych, wejście wyjście, strumienie [student@lcme14 student]$ echo system linux system linux [student@lcme14 student]$ echo system linux > ~/napis [student@lcme14 student]$ more ~/napis system linux [student@lcme14 student]$ echo jest the best >> ~/napis dopisanie tekstu do pliku system linux jest the best [student@lcme14 student]$ cat napis liczba_pi > dubel połączenie dwóch plików, zapisanie zawartości do nowego pliku
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 9 Potoki przetwarzanie potokowe bezpośrednie przekazywanie wyników z jednego działającego programu jako danych wejściowych do kolejnego programu Przykład: [student@lcme14 student]$ polecenie1 polecenie2 lub [student@lcme14 student]$ polecenie1 > plik [student@lcme14 student]$ polecenie2 < plik
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 0 Potoki [student@lcme14 student]$ cd /pub/programy [student@lcme14 programy]$./prog1./prog2 wykonanie programu prog1, wynik - wartość π przekazana jako dana wejściowa dla programu prog2 podaj x= 9.86959
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 1 [Enter] Polecenia more, less = stronicowanie tekstu na ekranie następny ekran następny wiersz zakończenie pracy poprzedni ekran [d] pół ekranu do przodu polecenie less : strona do przodu strona do tyłu [student@lcme14 student]$ ls /dev [student@lcme14 student]$ ls /dev more [student@lcme14 student]$ ls /dev less wyświetlenie zawartości katalogu /dev z użyciem stronicowania [student@lcme14 student]$ cat /pub/programy/opis more [student@lcme14 student]$ more /pub/programy/opis wyświetlenie zawartości pliku opis z użyciem stronicowania
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 2 Proces Proces = każdy uruchomiony egzemplarz danego programu Stany procesu: działający, czekający na udostępnienie przez system operacyjny zasobów, przeznaczony do zniszczenia, Zatrzymany przez użytkownika. Dziedziczenie procesów: Proces macierzysty Proces potomny Proces potomny Proces potomny
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 3 Polecenie report process status = ps = monitorowanie procesu [student@lcme14 student]$ ps (brak parametrów = lista procesów uruchomionych na aktualnej konsoli) PID TTY TIME CMD 16009 pts/15 0:00 ps 15993 pts/15 0:00 bash PID: identyfikator (unikalny, przypisany przez jądro systemu numer) procesu TTY: nazwa pliku oznaczającego nasz terminal TIME: zliczony czas pracy procesora zużyty przez proces CMD: polecenie powłoka proces który czyta zlecenie systemu operacyjnego z terminala, powłoka tworzy inny proces
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 4 Polecenie report process status = ps = monitorowanie procesu [student@lcme14 student]$ ps -f opcja -f : (full list) pełna lista informacyjna USER PID PPID C STIME TTY TIME CMD student 17634 15993 0 13:58:09 pts/15 0:00 ps student 15993 15987 0 13:35:35 pts/15 0:00 bash Proces macierzysty USER: nazwa użytkownika właściciela procesu, PPID: identyfikator procesu macierzystego, Każdy proces ma swojego właściciela (proces ps został zainicjowany jako proces potomny procesu macierzystego bash)
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 5 Polecenie report process status = ps = monitorowanie procesu [student@lcme14 student]$ ps -l opcja -l : (long list) długa lista informacyjna F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 8 O student 23682 23663 0 50 20? 142 15:55:21 pts/4 0:00 ps -lf 8 S student 23663 23657 0 50 20? 325? 15:55:07 pts/4 0:00 -bash S: status procesu O uruchomiony, S - uśpiony, R proces w kolejce do wykonania, T proces zatrzymany, Z proces przerwany, podczas gdy proces macierzysty jest wykonywany
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 6 Polecenie report process status = ps = monitorowanie procesu [student@lcme14 student]$ logname student nazwa zalogowanego użytkownika [student@lcme14 student]$ ps -u student opcja -u użytkownik: (user) wszystkie procesy wskazanego użytkownika PID TTY TIME CMD 1916 pts/2 0:00 ps 1196 pts/2 0:00 bash [student@lcme14 student]$ ps -u root [student@lcme14 student]$ ps -u root more nie każdy proces jest związany z terminalem PID TTY TIME CMD 0? 0:01 sched 1? 0:07 init... 4984? 0:00 sshd
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 7 [student@lcme14 student]$ kill [nr sygnału] [PID ident. procesu] [student@lcme14 student]$ kill -l opcja -l : wyświetla listę (pełną) możliwych do wysłania sygnałów wybrane sygnały : Polecenie kill = komunikacja z procesem, przesłanie standardowego sygnału do procesu 2 przerwanie wykonania procesu 9 unicestwienie (bezwarunkowe) procesu 15 (domyślne) zakończenie procesu, tzw. Miękkie 19 zatrzymanie wykonania procesu (możliwe wznowienie procesu za pomocą fg, bg) Przykład: [student@lcme14 student]$ kill 23456 [student@lcme14 student]$ kill -9 23456
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 8 1.Zainicjuj proces w aktywnym terminalu: [student@lcme14 student]$ /pub/programy/prog3 program wystartowal... Ćwiczenie 1 komunikacja z procesami 2.Zatrzymaj proces kombinacją klawiszy [Ctrl]+[z] 3.Wyświetl informacje o bieżących procesach poleceniem ps 4.Zakończ proces zainicjowany przez program prog3 poleceniem kill 5.Ponownie wyświetl informacje o bieżących procesach poleceniem ps 6.Jeśli proces prog3 nie został usunięty, powtórz próbę usunięcia procesu prog3 poleceniem kill -9 7.Wyświetl informacje o bieżących procesach poleceniem ps
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 9 Ćwiczenie 1 - cd komunikacja z procesami [student@lcme14 student]$ /pub/programy/prog3 zainicjowanie procesu program wystartował... Stopped zatrzymanie procesu (wysłanie sygnału nr 9) [student@lcme14 student]$ ps lista procesów uruchomionych na aktualnej konsoli PID TTY TIME COMMAND 4992 ttyp2 0:01 prog3 [student@lcme14 student]$ kill 4992 wysłanie sygnału (nr 15) zakończenia procesu [student@lcme14 student]$ ps proces zainicjowany przez prog3 nie został zakończony 4992 ttyp2 0:01 prog3 [student@lcme14 student]$ kill -9 4992 wysłanie sygnału (nr 9) zakończenia procesu [1] Killed /pub/programy/prog3
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 0 Procesy, zadania pierwszoplanowe, zadania w tle Zadanie pierwszoplanowe powłoka otrzymując polecenie od użytkownika uruchamia je, czeka na jego zakończenie zadanie jest uruchomione jako tzw. pierwszoplanowe terminal jest zablokowany do momentu zakończenia zadania Zadania w tle zadanie uruchomione jako drugoplanowe, nie blokuje okna terminalu zadanie jest realizowane po wylogowaniu się użytkownika możliwość uruchamiania z jednego terminala wielu zadań w tle Składnia (uruchomienie polecenia w tle): $ polecenie &
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 1 Polecenie jobs = monitorowanie zadań (zatrzymanych, pracujących w tle) [student@lcme14 student]$ /pub/programy/prog3 & zainicjowanie procesu w tle [1] 5074 [student@lcme14 student]$ /pub/programy/prog3 zainicjowanie procesu na pierwszym planie program wystartował zatrzymanie procesu Stopped [student@lcme14 student]$ jobs wyświetlenie informacji o procesach zatrzymanych i pracujących w tle [1] + Running /pub/programy/prog3 & [2] + Stopped /pub/programy/prog3 PID [student@lcme14 student]$ jobs -l [1] + 5074 Running /pub/programy/prog3 & [2] + 5090 Stopped /pub/programy/prog3 [student@lcme14 student]$ ps PID TTY TIME COMMAND 5074 ttyp2 0:01 prog3 5090 ttyp2 0:01 prog3 [student@lcme14 student]$ kill -9 5074 5090
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 2 fg bg Polecenia fg [nr zadania] foreground = wznowienie zatrzymanego zadania na pierwszym planie bg [nr zadania] background = wznowienie zatrzymanego zadania w tle brak opcji = uruchomienie ostatnio zatrzymanego zadania fg %nr_zadania bg %nr_zadania wznowienie zadania o podanym numerze (zwracanym poleceniem jobs)
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 3 [student@lcme14 student]$ /pub/programy/prog3 & [1] 5074 [student@lcme14 student]$ jobs [1] + Running /pub/programy/prog3 & [student@lcme14 student]$ fg %1 wznowienie (przeniesienie) zadania [1] jako zadania pierwszoplanowego Stopped zatrzymanie zadania pierwszoplanowego [student@lcme14 student]$ ps PID TTY Polecenia fg [nr zadania] bg [nr zadania] TIME COMMAND 4992 ttyp2 0:01 prog3 [student@lcme14 student]$ bg wznowienie ostatnio zatrzymanego zadania jako zadania w tle [1] /pub/programy/prog3&
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 4 Polecenia fg [nr zadania] bg [nr zadania] [student@lcme14 student]$ jobs -l [1] + 4992 Running /pub/programy/prog3 & [student@lcme14 student]$ kill -9 4992 [1] - Killed /pub/programy/prog3 &
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 5 Ćwiczenie 2 zadania pierwszoplanowe, zadania w tle, monitorowanie zadań 1. Zainicjuj proces pierwszoplanowy (plikiem /pub/programy/prog3) w aktywnym terminalu. 2.Zatrzymaj wykonywanie procesu kombinacją klawiszy [Ctrl]+[z]. 3.Wyświetl informacje o zatrzymanych zadaniach 4.Aktywuj w tle zatrzymany proces
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 6 Ćwiczenie 2 zadania pierwszoplanowe, zadania w tle, monitorowanie zadań 1. Zainicjuj proces pierwszoplanowy (plikiem /pub/programy/prog3) w aktywnym terminalu. 2.Zatrzymaj wykonywanie procesu kombinacją klawiszy [Ctrl]+[z]. 3.Wyświetl informacje o zatrzymanych zadaniach 4.Aktywuj w tle zatrzymany proces [student@lcme14 student]$ /pub/programy/prog3 program wystartował... [student@lcme14 student]$ jobs [1] + Stopped /pub/programy/prog3 [student@lcme14 student]$ bg [1] /pub/programy/prog3&
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 7 Ćwiczenie 2 - cd zadania pierwszoplanowe, zadania w tle, monitorowanie zadań 1.Uruchom w tle nowe zadanie (plik /pub/programy/prog3) 2.Wyświetl informacje o aktualnie uruchomionych procesach wyświetlając PID dla każdego zadania 3.Zakończ działanie procesów zainicjowanych plikiem /pub/programy/prog3 4.Wyświetl informacje o aktualnie uruchomionych procesach wyświetlając PID dla każdego zadania
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 8 Ćwiczenie 2 - cd zadania pierwszoplanowe, zadania w tle, monitorowanie zadań 1.Uruchom w tle nowe zadanie (plik /pub/programy/prog3) 2.Wyświetl informacje o aktualnie uruchomionych procesach wyświetlając PID dla każdego zadania 3.Zakończ działanie procesów zainicjowanych plikiem /pub/programy/prog3 4.Wyświetl informacje o aktualnie uruchomionych procesach wyświetlając PID dla każdego zadania [student@lcme14 student]$ /pub/programy/prog3 & [2] 5074 [student@lcme14 student]$ ps PID TTY TIME COMMAND 5054 ttyp2 0:52 /pub/programy/prog3 5074 ttyp2 0:00 /pub/programy/prog3 [student@lcme14 student]$ kill -9 5054 5074 [student@lcme14 student]$ ps
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 2 9 Automatyzacja rutynowych czynności Polecenia alias, unalias Zastąpienie długiego zapisu polecenia, lub ciągu poleceń krótszym ciągiem znaków tzw. aliasem Alias może być wykonywany przez tego użytkownika, który go zdefiniował Aliasy są aktywne tylko do zakończenia sesji Usunięcie aliasu - Polecenie unalias
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 3 0 Polecenia alias, unalias [student@lcme14 student]$ alias brak parametrów = wyświetlenie wszystkich zdefiniowanych aliasów [student@lcme14 student]$ alias p1= /pub/programy/prog1 [student@lcme14 student]$ p1 zdefiniowanie nowego aliasu uruchomienie programu /pub/programy/prog1 przy użyciu zdefiniowanego aliasu [student@lcme14 student]$ unalias p1 [student@lcme14 student]$ p1 usunięcie aliasu
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 3 1 Polecenia alias, unalias [student@lcme14 student]$ alias p2= cd;clear;/pub/programy/prog1 zdefiniowanie aliasu wykonującego 3 polecenia: przejście do katalogu domowego, wyczyszczenie ekranu, uruchomienie programu prog1 [student@lcme14 student]$ cd / [student@lcme14 /]$ p2... [student@lcme14 student]$
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 3 2 Ćwiczenie 3 aliasy Zdefiniuj alias dir który wyświetla zawartość katalogu pokazując pliki ukryte, oraz pełne informacje o prawach dostępu do plików, stronicując wydruk; Zdefiniuj alias hs, pokazujący ostatnio wykonywane 3 polecenia (wykorzystaj polecenie history) Zdefiniuj alias jm, którego rezultatem będzie wyświetlenie informacji o zalogowanym użytkowniku, nazwie serwera, oraz dzisiejszej dacie Sprawdź działanie zdefiniowanych aliasów
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 3 3 Ćwiczenie 3 - cd aliasy [student@lcme14 student]$ alias dir= ls -al more alias który wyświetla zawartość katalogu pokazując pliki ukryte, oraz pełne informacje o prawach dostępu do plików, stronicując wydruk [student@lcme14 student]$ alias hs= history 3 alias pokazujący ostatnio wykonywane 3 polecenia [student@lcme14 student]$ alias jm= logname;hostname;date alias który wyświetla informacje o zalogowanym użytkowniku, nazwie serwera, oraz dzisiejszą datę
7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 3 4 plik.bashrc Skrypt = plik tekstowy, którego treścią są polecenia przeznaczone do wykonania przez powłokę.bashrc = skrypt wykonywany w momencie zalogowania się użytkownika do systemu, może zawierać definicje aliasów, podstawienia wartości pod zmienne środowiskowe, etc. [student@lcme14 student]$ more.bashrc