Wszystko, co musisz wiedzieć o procesach w Linux [kompleksowy przewodnik]

Wszystko, co musisz wiedzieć o procesach w Linux [kompleksowy przewodnik]

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 Linux

Tworzenie 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 HTTPD 
Znajdź identyfikator procesu Linux

Aby znaleźć identyfikator procesu i identyfikator procesu nadrzędnego bieżącej powłoki, uruchom:

$ echo $$ $ echo $ pPID 
Znajdź 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:

# Cloudcmd 
Rozpocznij 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 & # Jobs 
Rozpocznij 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 %1 
Linux 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łowa 
Wypisz 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:

# szczyt 
Wypisz 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:

# Rzuty 
Spojrzenia - 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:

  1. 20 Narzędzia wiersza poleceń do monitorowania wydajności Linux
  2. 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 tecmint 
Kontroluj 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:

  1. Przewodnik po zabiciu, Pkill i Killall poleca na zakończenie Processess Linux
  2. 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 -l 
Wymień 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:

$ top 
Wypisz 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.

  1. Zarządzanie procesami Linux: uruchom, wyłączenie i wszystko pomiędzy
  2. Znajdź 15 najlepszych procesów według użycia pamięci za pomocą „Top” w trybie wsadowym
  3. Znajdź najwyższe procesy uruchomione przez najwyższe zużycie pamięci i procesora w Linux
  4. 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.