Wróć do informacji o e-podręczniku Wydrukuj Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Gdy uruchamiamy aplikację, część jej kodu ładowana jest do pamięci operacyjnej urządzenia. Od tego momentu aplikacja dla systemu operacyjnego staje się procesemprocesprocesem.

Proces systemu operacyjnego to zatem program komputerowy, który został uruchomiony w tym systemie. Od chwili jego włączenia system operacyjny staje się odpowiedzialny za pracę tego programu, przydziela mu zasoby sprzętowe (procesor, pamięć RAM), a także nadzoruje jego poprawne działanie oraz wpływ na inne aplikacje i programy.

Proces
Definicja: Proces

uruchomiona w systemie operacyjnym aplikacja (program)

Procesy w systemie opartym na jądrze Linux

Każdy, nawet najmniejszy program komputerowy uruchomiony w systemie operacyjnym staje się procesem. Uruchomienie procesu powoduje, że dla danej aplikacji system operacyjny przydziela zasoby sprzętowe (procesor oraz pamięć RAM), które są niezbędne do jej poprawnego działania, a także jednoznaczny identyfikator (ang. PID – Process IDentifier).

Kiedy wyłączamy aplikację, system operacyjny zamyka również jej proces i zwalnia przydzielone jej zasoby sprzętowe. Oczywiście dzieje się to w tle, co oznacza, że użytkownik nie wykonuje żadnych dodatkowych czynności - system operacyjny robi to wszystko samodzielnie.

Odpowiedzialny za to jest planista (ang. scheduler) – w każdym systemie operacyjnym odpowiada on za przydzielanie zasobów sprzętowych aplikacjom, które zostały w nim uruchomione.

Procesy systemowe i proces nadrzędny

Aby system operacyjny mógł działać poprawnie, wymagane są procesy systemowe odpowiedzialne za jego poszczególne elementy. Należą do nich np. procesy związane z logowaniem użytkowników, uruchamiające interfejs graficzny, zapewniające poprawne działanie komputera w sieci czy też drukowanie. Wszystkie te procesy są inicjowane - czyli uruchamiane - przez proces nadrzędny.

Proces nadrzędny
Definicja: Proces nadrzędny

proces, który inicjowany jest przy starcie systemu i pozwala na uruchamianie innych procesów

Dawniej w systemach opartych na jądrze Linux procesem nadrzędnym był proces o nazwie init. W nowych systemach procesem nadrzędnym dla wszystkich innych jest proces o nazwie systemd. To on uruchamiany jest przy starcie systemu Linux i umożliwia np. załadowanie graficznego interfejsu użytkownika (proces gnome) czy ustawień sieciowych (proces NetworkManager). Podczas użytkowania systemu odpowiedzialny jest również za uruchamianie aplikacji użytkownika, takich jak przeglądarka internetowa czy edytor tekstu.

Aby przekonać się, że to właśnie proces systemd w systemach Linux jest nadrzędny wobec wszystkich innych, można w konsoli systemowej wydać polecenie pstree, które wyświetli hierarchię procesów w systemie.

Ro4uOXJnjOJnT
Wynik polecenia pstree
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Zarządzanie procesami w systemie

Podstawowym poleceniem/programem do zarządzania procesami systemowymi w dystrybucjach Linux jest ps. Zasadniczo nie używa się tego programu bez dodatkowych opcji, parametrów czy argumentów ponieważ wyniki, jakie wówczas uzyskujemy, mogą być mylące.

Ważne!

Wykonanie polecenia ps bez argumentów i opcji dodatkowych zazwyczaj wyświetla tylko dwa procesy: bash oraz ps:

  • bash to proces powłoki systemowej (powłoka pozwala wykonywać polecenia systemowe), uruchamiany przy starcie systemu;

  • ps to proces związany z programem do zarządzania procesami, uruchamiany po wydaniu polecenia ps.

RnHpt4KI42MG41
Wynik polecenia ps
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wyświetlenie uruchomionych procesów

System operacyjny uruchamia procesy, które są niezbędne do jego prawidłowego działania. Użytkownik systemu uruchamia natomiast zarówno procesy systemowe, jak i te związane z używanymi aktualnie aplikacjami. Wszystkie procesy uruchomione przez danego użytkownika (w tym przypadku użytkownika o nazwie ubuntu), zarówno te systemowe, jak i dotyczące procesów uruchomionych przez niego aplikacji, można wyświetlić np. przez wydanie polecenia:

ps -u ubuntu

Wiele procesów uruchomionych w systemie Linux działa niezależnie od aktualnie zalogowanego użytkownika. Ich listę wraz z wieloma informacjami dodatkowymi (m.in. identyfikatorem, godziną uruchomienia czy procentowym wykorzystaniem zasobów procesora) wyświetlimy, wykonując polecenie:

ps aux

Zamykanie procesów z poleceniem kill

Kiedy uruchamiamy aplikację, system operacyjny tworzy jej proces. W momencie gdy aplikację wyłączamy, system operacyjny zwalnia zasoby sprzętowe, jakie jej przydzielił, i zamyka proces. Istnieje zatem prosta zależność: wyłączenie aplikacji zamyka jej proces systemowy.

Czasami zdarza się jednak sytuacja, gdzie wyłączenie aplikacji z różnych powodów nie spowoduje zamknięcia jej procesu. Wówczas jedynym sposobem na jej całkowite wyłączenie (jeśli proces działa, to system „myśli”, że aplikacja nadal pracuje) jest ręczne wyłączenie procesu. Można to łatwo zrobić, korzystając z polecenia kill oraz z odpowiednich opcji.

Program kill służy do przesyłania odpowiednich sygnałów do procesów uruchomionych w systemie. Mamy do dyspozycji wiele sygnałów - jeden z nich to TERM, którego zadaniem jest wyłączenie procesu o podanym identyfikatorze.

Przykładowo, wykonanie polecenia:

kill 5486

spowoduje wysłanie sygnału TERM do procesu o numerze 5486, czego konsekwencją będzie zamknięcie tego procesu (jeśli oczywiście proces taki w systemie był uruchomiony).

Ćwiczenie 1

Wyłączenie przeglądarki internetowej za pomocą polecenia kill.

RQFPt76g3zJ6S
Film nawiązujący do treści materiału: Wyłączenie przeglądarki internetowej za pomocą polecenia kill.

Nie tylko ps

Polecenie ps to bardzo elastyczne i chętnie stosowane przez administratorów narzędzie do zarządzania procesami w systemach opartych na jądrze Linux. Nie jest to jednak jedyne narzędzie, jakie mamy do dyspozycji. Do zarządzania procesami można również wykorzystać polecenia lub programy:

  • top,

  • htop,

  • strance,

  • procfs.

Program top pozwala wyświetlić uruchomione procesy, a także aktualizuje wyniki w czasie rzeczywistym. Gdy jakiś proces zostanie uruchomiony lub zamknięty, wynik polecenia to uwzględni.

Na grafice widzimy, że pierwszy na liście jest proces odpowiedzialny za graficzny interesuj użytkownika i został uruchomiony po zalogowaniu użytkownika ubuntu.

RlSr7NghQ0Q3M
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Manual, czyli instrukcja obsługi programu

Jak każdy program uruchamiany w trybie tekstowym, również ps dysponuje wieloma opcjami dodatkowymi. Opcji tych jest całkiem sporo, a opis ich wszystkich można znaleźć w podręczniku systemowym dla tego programu, czyli w manualu. Manual to swoista instrukcja obsługi konkretnego polecenia czy programu uruchamianego poprzez terminal, zawierająca opis większości opcji, jakimi dane polecenie dysponuje.

Ważne!

Manual dla polecenia lub programu uruchamia się przez wykonanie polecenia man z odpowiednim argumentem. Argumentem jest nazwa polecenia/programu, dla którego manual chcemy uruchomić. Manual dla polecenia ps obrazuje wideo:

R19SEjhIT8CKo
Film nawiązujący do treści materiału: Polecenie man.

Alternatywą dla podręczników systemowych może być również pomoc (ang. help) dla polecenia/programu. Pomoc to nic innego jak lżejsza wersja podręcznika. Najczęściej wyświetla najważniejsze opcje danego polecenia/programu, czasami również przykłady użycia. Standardowo pomoc dla konkretnego polecenia uruchamia się poprzez wykonanie go z opcją h.

Przykładowo, wydanie polecenia:

adduser -h

wyświetli pomoc programu adduser.

Ważne!

Często uruchomienie pomocy dla danego polecenia wymaga zastosowania opcji h w pełnej nazwie (help), poprzedzonej podwójnym myślnikiem oraz parametrami dodatkowymi. Przykładem takiego programu jest właśnie ps, który do wyświetlania pomocy wymaga opcji --help oraz dodatkowego znacznika określającego rodzaj pomocy.

Przykładowo, wykonanie polecenia:

ps --help s

wyświetli najprostszą wersję pomocy tego programu.

Słownik

manual
manual

inaczej: podręcznik polecenia; dokumentacja oraz opis działania polecenia lub programu

proces
proces

aplikacja lub program uruchomione w systemie operacyjnym