Wszystko, co musisz wiedzieć o procesach w Linux [kompleksowy przewodnik]
- 4608
- 424
- Juliusz Janicki
W tym artykule przejdziemy przez podstawowe zrozumienie procesów i krótko przyjrzymy się zarządzaniu procesami w Linux za pomocą niektórych poleceń.
A proces odnosi się do programu wykonania; To działająca instancja programu. Wybędzie się z instrukcji programu, odczytania danych z plików, innych programów lub danych wejściowych od użytkownika systemu.
Rodzaje procesów
Istnieją zasadniczo dwa rodzaje procesów w Linux:
- Procesy na pierwszym planie (nazywane również procesami interaktywnymi) - są one inicjowane i kontrolowane przez sesję końcową. Innymi słowy, musi istnieć użytkownik podłączony do systemu, aby rozpocząć takie procesy; Nie zaczęli automatycznie jako część funkcji/usług systemowych.
- Procesy w tle (nazywane również procesami nieinteraktywnymi/automatycznymi) - są procesami niezwiązanymi z terminalem; Nie oczekują żadnego wprowadzania użytkownika.
Co to jest demony
Są to specjalne rodzaje procesów w tle, które rozpoczynają się od uruchamiania systemu i działają na zawsze jako usługa; Nie umierają. Rozpoczyna się je jako zadania systemowe (uruchamiane jako usługi), spontanicznie. Mogą być jednak kontrolowane przez użytkownika za pośrednictwem procesu init.
Stan procesu LinuxTworzenie procesów w Linux
Nowy proces jest zwykle tworzony, gdy istniejący proces tworzy dokładną kopię w pamięci. Proces dziecka będzie miał to samo środowisko co jego rodzic, ale tylko numer identyfikacyjny procesu jest inny.
Istnieją dwa konwencjonalne sposoby wykorzystywania nowego procesu w Linux:
- Korzystanie z funkcji systemu () - Ta metoda jest stosunkowo prosta, jest jednak nieefektywna i ma znacząco pewne ryzyko bezpieczeństwa.
- Za pomocą funkcji Fork () i exec () - Ta technika jest nieco zaawansowana, ale oferuje większą elastyczność, szybkość, wraz z bezpieczeństwem.
Jak Linux identyfikuje procesy?
Ponieważ Linux jest systemem wielu użytkowników, co oznacza, że różni użytkownicy mogą uruchamiać różne programy w systemie, każdy z uruchomiony instancja programu musi być jednoznacznie zidentyfikowana przez jądro.
A program jest identyfikowany przez jego identyfikator procesu (Pid) Oprócz jego procesów nadrzędnych identyfikatorów (PPID) Dlatego procesy można dalej podzielić na:
- Procesy rodziców - Są to procesy, które tworzą inne procesy w czasie wykonywania.
- Procesy dziecięce - Procesy te są tworzone przez inne procesy w czasie wykonywania.
Proces init
W tym Proces jest matką (rodzicem) wszystkich procesów w systemie, jest to pierwszy program wykonywany, gdy system Linux unosi się; zarządza wszystkimi innymi procesami w systemie. Rozpoczyna się od samego jądra, więc w zasadzie nie ma procesu rodzicielskiego.
Proces inicjowania zawsze ma identyfikator procesu 1. Działa jako adopcyjny rodzic dla wszystkich osieroconych procesów.
Możesz użyć polecenie PIDOF Aby znaleźć identyfikator procesu:
# PIDOF Systemd # PIDOF TOP # PIDOF HTTPDZnajdź identyfikator procesu Linux
Aby znaleźć identyfikator procesu i identyfikator procesu nadrzędnego bieżącej powłoki, uruchom:
$ echo $$ $ echo $ pPIDZnajdź identyfikator procesu nadrzędnego Linux
Rozpoczęcie procesu w Linux
Po uruchomieniu polecenia lub programu (na przykład Cloudcmd - CloudCommander), rozpocznie proces w systemie. Możesz uruchomić proces pierwszego planu (interaktywny) w następujący sposób, zostanie on podłączony do terminala, a użytkownik może wysłać wprowadzenie go:
# CloudcmdRozpocznij interaktywny proces Linux
Zadania tła Linux
Aby rozpocząć proces w tle (nieinteraktywny), użyj I
Symbol, tutaj proces nie odczytuje danych wejściowych od użytkownika, dopóki nie zostanie przeniesiony na pierwszy plan.
# Cloudcmd & # JobsRozpocznij proces Linux na tle
Możesz także wysłać proces na tło, zawieszając go za pomocą [Ctrl + Z]
, To wyśle Sigstop sygnał do procesu, zatrzymując w ten sposób jego operacje; staje się bezczynny:
# TAR -CF Backup.TAR /Backups /* #Press Ctrl+z # Oferty pracy
Aby kontynuować uruchamianie wyżej wymienionego polecenia w tle, użyj BG Komenda:
# Bg
Aby wysłać proces w tle na pierwszy plan, użyj FG Poleć razem z identyfikatorem zadania:
# Jobs # FG %1Linux tła zadania procesów
Możesz także polubił: Jak uruchomić polecenie Linux na tle i odłączyć proces w terminalu
Stany procesu w Linux
Podczas wykonywania proces zmienia się z jednego stanu na inny w zależności od środowiska/okoliczności. W Linux proces ma następujące możliwe stany:
- Działanie - Tutaj albo działa (jest to bieżący proces w systemie), albo jest gotowy do uruchomienia (czeka na przypisanie do jednego z procesorów).
- Czekanie - W tym stanie proces czeka na zdarzenie lub na zasób systemowy. Ponadto jądro rozróżnia również dwa rodzaje procesów oczekujących; Procesy oczekiwania przerywające - mogą być przerywane przez sygnały i nieprzerwane procesy oczekiwania - czekają bezpośrednio na warunki sprzętowe i nie mogą być przerwane przez żadne zdarzenie/sygnał.
- Zatrzymany - W tym stanie proces został zatrzymany, zwykle poprzez otrzymanie sygnału. Na przykład debugowany proces.
- Bałwan - Tutaj proces jest martwy, został zatrzymany, ale nadal ma wpis w tabeli procesów.
Jak wyświetlić aktywne procesy w Linux
Istnieje kilka narzędzi Linux do przeglądania/listy procesów uruchamiających w systemie, dwa tradycyjne i znane są PS i Top Polets:
1. polecenie PS
Wyświetla informacje o wyborze aktywnych procesów w systemie, jak pokazano poniżej:
# ps # ps -e | głowaWypisz aktywne procesy Linux
2. Top - narzędzie do monitorowania systemu
TOP to potężne narzędzie, które oferuje dynamiczny widok z działającego systemu rzeczywistego, jak pokazano na zrzucie ekranu poniżej:
# szczytWypisz procesy uruchamiające Linux
Przeczytaj to, aby uzyskać więcej najlepszych przykładów użytkowania: 12 przykładów poleceń w Linux
3. Spojrzenie - narzędzie do monitorowania systemu
Spojrzenia to stosunkowo nowe narzędzie do monitorowania systemu o zaawansowanych funkcjach:
# RzutySpojrzenia - Monitorowanie procesów Linux
Aby uzyskać kompleksowy przewodnik użytkowania, Przeczytaj: Spojrzenie - Zaawansowane narzędzie monitorowania systemu w czasie rzeczywistym dla Linux
Istnieje kilka innych przydatnych narzędzi do monitorowania systemu Linux, których można użyć do listy aktywnych procesów, otwórz poniższy link, aby przeczytać więcej o nich:
- 20 Narzędzia wiersza poleceń do monitorowania wydajności Linux
- 13 Bardziej przydatne narzędzia do monitorowania Linux
Jak kontrolować procesy w Linux
Linux ma również kilka poleceń do kontrolowania procesów, takich jak Kill, Pkill, PGrep i Killall, poniżej znajduje się kilka podstawowych przykładów ich używania:
$ pgrep -u tecmint top $ zabójcy 2308 $ pGrep -u tecmintKontroluj procesy Linux
Aby dowiedzieć się, jak dogłębnie korzystać z tych poleceń, aby zabić/zakończyć aktywne procesy w Linux, otwórz poniższe linki:
- Przewodnik po zabiciu, Pkill i Killall poleca na zakończenie Processess Linux
- Jak znaleźć i zabić procesy uruchomione w Linux
Zauważ, że możesz ich użyć do zabijania aplikacji niereagujących w Linux, gdy system zamarza.
Wysyłanie sygnałów do procesów
Podstawowym sposobem kontrolowania procesów w Linux jest wysyłanie do nich sygnałów. Istnieje wiele sygnałów, które można wysłać do procesu, aby wyświetlić wszystkie sygnały działające:
$ Kill -lWymień wszystkie sygnały Linux
Aby wysłać sygnał do procesu, użyj poleceń zabójstwa, pkill lub pGREP, o których wspominaliśmy wcześniej. Ale programy mogą odpowiadać na sygnały tylko wtedy, gdy są zaprogramowane w celu rozpoznania tych sygnałów.
A większość sygnałów jest przeznaczona do użytku wewnętrznego przez system lub dla programistów, gdy piszą kod. Poniżej przedstawiono sygnały, które są przydatne dla użytkownika systemu:
- Wzdychanie 1 - wysłane do procesu po zamknięciu jego terminalu kontrolnego.
- Sigint 2 - wysłane do procesu przez jego terminal sterujący, gdy użytkownik przerywa proces, naciskając
[Ctrl+C]
. - Sigquit 3 - wysłane do procesu, jeśli użytkownik wyśle sygnał wyrzucenia
[Ctrl+D]
. - Sigkill 9 - Ten sygnał natychmiast kończy (zabija) proces, a proces nie będzie wykonywać żadnych operacji oczyszczania.
- SIGMER 15 - ten sygnał terminu programu (zabójstwo wyśle to domyślnie).
- SIGTSTP 20 - wysłane do procesu przez jego terminal sterujący, aby zażądać go do zatrzymania (zatrzymanie terminala); zainicjowane przez naciśnięcie użytkownika
[Ctrl+Z]
.
Poniżej przedstawiono przykłady Kill Commens, aby zabić aplikację Firefox za pomocą jej PID, gdy zamarza:
$ Pidof Firefox $ Kill 9 2687 lub $ KILL -KILL 2687 lub $ KILL -SIGKILL 2687
Aby zabić aplikację za pomocą jej nazwy, użyj Pkill lub Killall jak:
$ PKILL FIREFOX $ KILLLLLL FIREFOX
Zmiana priorytetu procesu Linuksa
W systemie Linux wszystkie aktywne procesy mają priorytet i pewną ładną wartość. Procesy o wyższym priorytecie zwykle uzyskają więcej czasu procesora niż procesy o niższych priorytetach.
Jednak użytkownik systemu z uprawnieniami root może to wpłynąć na to Ładny I Renice polecenia.
Ze wyjścia górnego polecenia Ni pokazuje ładną wartość procesu:
$ topWypisz procesy uruchamiające Linux
Użyj Ładny polecenie, aby ustawić ładną wartość dla procesu. Należy pamiętać, że normalni użytkownicy mogą przypisać ładną wartość od zera do 20 do posiadanych procesów.
Tylko użytkownik root może używać negatywnych wartości NICE.
Do Renice Priorytet procesu, użyj Renice polecenie w następujący sposób:
$ Renice +8 2687 $ Renice +8 2103
Sprawdź nasze przydatne artykuły na temat zarządzania i kontrolowania procesów Linux.
- Zarządzanie procesami Linux: uruchom, wyłączenie i wszystko pomiędzy
- Znajdź 15 najlepszych procesów według użycia pamięci za pomocą „Top” w trybie wsadowym
- Znajdź najwyższe procesy uruchomione przez najwyższe zużycie pamięci i procesora w Linux
- Jak znaleźć nazwę procesu za pomocą numeru PID w Linux
To wszystko na teraz! Czy masz jakieś pytania lub dodatkowe pomysły, podziel się nimi z nami za pomocą poniższego formularza opinii.
- « Jak wykonywać operacje samopomocy i ponownego równoważenia w Gluster File System-Część 2
- Jak włączyć udostępnianie komputerów stacjonarnych w Ubuntu i Linux Mint »