Przeczytaj
Gdy uruchamiamy aplikację, część jej kodu ładowana jest do pamięci operacyjnej urządzenia. Od tego momentu aplikacja dla systemu operacyjnego staje się procesemprocesem.
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.
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, 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.
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.
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 poleceniaps
.
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).
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.
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.
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:
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
.
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
inaczej: podręcznik polecenia; dokumentacja oraz opis działania polecenia lub programu
aplikacja lub program uruchomione w systemie operacyjnym