Napisane przez mediologia dnia . Wysłane Rozdział 7 - Zarządzanie procesami i zadaniami.

7.1 Zarządzanie procesami i Zadaniami

 

Bez względu na to którego systemu operacyjnego się używa czy Windows czy Linux, jest on w stanie obsłużyć jednocześnie wiele procesów; otwierając w systemie Windows okno Menadżera zadań, można zobaczyć jakie aplikacje są otwarte, uruchamiając te aplikacje system uruchamia jednocześnie wiele procesów wykonujących różne funkcje. Używają Linuksa, mamy znacznie większą  kontrole nad każdym z tych procesów. W Linuksie istnieje możliwość tworzenia przez użytkownika procesów, zmiany ich priorytetów, oraz usuwania procesów. Można także – a jest to w programowaniu niezwykle  istotne – skierować wynik z jednego procesu do innego procesu. Czym jest jednak proces, w jaki sposób go zdefiniować by jego funkcje w systemie operacyjnym były zrozumiałe ?

W najbardziej abstrakcyjnym sensie proces to każdy wykonywany program czy wykonywane polecenie. Kiedy wydajemy na przykład chyba najczęściej używane przez użytkownika polecenie ls to rozpoczyna się proces uruchamiający odpowiedni program w wyniku czego otrzymujemy rezultat wyświetlony na ekranie. W systemie w każdym momencie jego działania są wykonywane procesy, wywoływane nie tylko prze użytkownika, ale także procesy wywołane przez innych użytkowników i również procesy wykonywane przez sam system operacyjny Linux. Te ostatnie to często  tzw. demony czyli usługi, które działają bez nadzoru użytkownika, zapewniające funkcje wykonywane przez system operacyjny. Demony mogą wykonywać funkcje drukowania, wysyłania poczty, monitorowania stanu działania systemu i wiele innych.

Polecenie - ps  opcje - pozwala otrzymać informacje o odbywających się aktualnie w pamięci komputera, procesach. Jeżeli wykonujemy samo polecenie  ps bez opcji to wtedy na ekranie ukazują się procesy użytkownika, który wykonał polecenie  ps (na ekranie widzimy go w ostatniej linii).

$  ps

PID               TTY          TIME          CMD

10804           pts/1         0:20          bash

3408             pts/1         0:00           vi

10804           pts/1         0:20           sed

5408             pts/1         0:00           ps

 

Ogólna postać polecenia ps ma następującą postać:

ps   [  -opcja  ]   [ nazwa użytkownika ]

 

opcje:

-u nazwa użytkownika pozwala wyselekcjonować procesy tego użytkownika dla wszystkich jego logowań

-e wyświetla informacje o wszystkich aktualnie odbywających się procesach

-f wyświetla, dla każdego procesu następujące informacje:

- nazwę użytkownika  (UID)

- numer procesu  (PID)

- numer ojca procesu (PPID)

- godzinę egzekucji procesu (STIME)

- imię komputera  (TTY)

- czas egzekucji procesu  (TIME)

-a wyświetla procesy innych użytkowników

 

Przetestujmy polecenie ps z różnymi opcjami, w tym celu w linii poleceń wystukajmy 

$  ps  -ef

 

UID            PID       PPID           C    STIME     TTY               TIME           CMD

root             1            0            0     May18      ?                00:00:03        init

root           300           1            0    May18      ?                 00:00:08        syslogd   -m  0

daemon     327           1            0    May18      ?                 00:00:00        /usr/sbin/atd

root           343           1            0    May18      ?                 00:00:00        crond

root           359           1            0    May18      ?                 00:00:03        inted

root           411           1            0    May18      ?                 00:00:00        sendmail

root           444           1            0    May18      ?                 00:00:00        httpd

piotr         11736  11731            0    13:45       pts/0           00:00:00        /bin/bash

piotr         11737  11732            0    13:45       pts/1           00:00:00        /bin/bash

piotr         11738  11733            0    13:45       pts/0           00:00:00        /bin/bash

 

Rezultat tego polecenia jest o wiele bogatszy od rezultatu polecenia  ps bez opcji. Pojawiły się cztery nowe kolumny. Pierwsza z nich wskazuje identyfikator użytkownika skojarzonego z procesem. Trzecia kolumna to identyfikator procesu nadrzędnego, pokazuje on komu jest podporządkowany proces wywołany przez polecenie   ps  -ef . Z czwartej kolumny można dowiedzieć się, czy mamy do czynienia z zadaniem zaplanowanym (pojecie zadania wyjaśniamy w dalszej części rozdziału), a piąta kolumna pokazuje czas rozpoczęcia procesu. Zwracamy także uwagę, że na skutek użycia opcji  -  f, w kolumnie  CMD widzimy całe polecenie – poprzednio widoczna była tylko jego pierwsza część. Najważniejsza informacja  - szczególnie dla administratora systemu – zawarta jest w kolumnie trzeciej : jest to numer ojca procesu.

Co to jest „ojciec procesu” ? Co to jest „proces syna” ? Aby zrozumieć to pojecie musimy powrócić do samego pojęcia „procesu”. Jak pamiętamy proces to każdy wykonywany program czy wykonywane polecenie, czyli proces jest poleceniem lub programem który się toczy w trakcie ich wykonywania. Atrybuty procesy czyli parametry go definiujące przynależą do tego co nazywamy otoczeniem informatycznym do którego należą : dane zmienne, dane stałe (pojęcia te zostaną dokładniej omówione w rozdziałach omawiających programowanie) pliki przypisane wykonywanemu procesowi, zmienne itd. W najogólniejszym sensie proces syna jest procesem który został utworzony przez inny proces zwany procesem ojca.

Powłoka w której pracujemy  - bash-shell – działa jako proces. Kiedy wydajemy – w linii poleceń -polecenie do wykonania, powłoka sprawdza czy może to zrobić bez żadnej pomocy z zewnątrz (np. czy nie musi nawiązać kontaktu z jadrem systemu operacyjnego). Jeśli powłoka nie potrafi wykonać polecenia lub programu, wywołuje inny proces, który się tym zajmie. Ten inny proces może być nazwany „synem powłoki”, która staje się jego ojcem (rodzicem).

Kiedy proces syn zakończy wykonywanie swego zadania, zwraca jego rezultat do procesu ojca, a następnie kończy swoje działanie. Ponieważ jak pamiętamy Linux to wielozadaniowy system operacyjny, każdy ojciec może mieć wielu synów. Jeśli proces syn nie potrafi samodzielnie wykonać wszystkich zleconych mu zadań (np. kompilacji edycji) może wywołać jeden lub więcej dodatkowych procesów, które sa w stosunku do niego procesami synami. W takiej sytuacji staje się on sam procesem ojca. Wynika z tego, że jeden proces może być jednocześnie procesem ojcem i procesem synem.

Dwa polecenia związane z poleceniem  ps przedstawiają inne widoki procesów. Pierwsze z nich to polecenie  pstree, które w graficzny sposób pokazuje relacje miedzy procesami. Procesy „synowie” są graficznie przedstawione pod procesami „ojcami” , widać też gdzie każdy proces należy – który proces jest ojcem który synem.

Drugim programem związanym z  ps jest polecenie (narzędzie)   top . Pokazuje on nie tylko bieżące procesy, ale pozostaje aktywny, stale aktualizuje wyświetlane informacje. Na górze ekranu widać informacje, od ilu dni system działa, jaka jest liczba użytkowników, statystyki dotyczące pamięci. Po uruchomieniu  programu  top można użyć następujące klawisze:

 

h pomoc

q wyjście z programu

s zmiana opóźnienia miedzy aktualizacjami wyświetlanego ektanu (domyślnie jest to 5 sekund)

spacja wymuszenie natychmiastowej aktualizacji

u wyświetlenie informacji o procesach jednego użytkownika

 

 

Zarządzanie procesami i zadaniami Darmowy kurs Linux