Proces zabijania Linux przez PID

Proces zabijania Linux przez PID
W systemie Linux (i większości nowoczesnych systemów operacyjnych) zakończenie procesu wymaga wysyłki odpowiedniego sygnału terminalu. Istnieje wiele sposobów wysyłania sygnału zakończenia do określonego procesu. Jeśli znasz PID (identyfikator procesu) procesu docelowego, polecenie zabójstwa może bezpośrednio wysłać do niego sygnał terminu zakończenia.

W tym przewodniku pokażemy, jak zabić proces Linuksa po jego PID.

PID w Linux

Termin PID jest akronimem dla „numeru identyfikacji procesu”. Każdemu procesowi przypisuje się unikalne PID w momencie, gdy są tworzone w systemie. PID numer 1 jest przypisany do SystemD (init, dla starszych systemów). Zasadniczo SystemD lub init jest zawsze pierwszym procesem, który rozpocznie się w Linux i jest rodzicem wszystkich innych procesów.

Istnieje kilka narzędzi, których możemy użyć, aby uzyskać PID procesu docelowego. Najpopularniejszą (i zalecaną) metodą uzyskania PID jest użycie polecenia PS. To wbudowane narzędzie dostępne we wszystkich systemach Linux. Dowiedz się więcej dogłębnie o poleceniu PS w Linux.

Aby wydrukować wszystkie uruchomione procesy za pomocą PID, uruchom następujące polecenie PS:

$ ps -ef

Aby ułatwić nawigację, wyprzyj wyjście do polecenia mniej:

$ ps -ef | mniej

Zauważ, że kolumna PID wymienia wszystkie procesy posortowane przez PID. To wartość, której szukamy.

Szukam konkretnego procesu o określonej nazwie? Wtedy polecenie Grep jest twoim przyjacielem. Może wyszukiwać określony wzór w danym pliku (w tym przypadku stdout). Na przykład następujące polecenie poszukiwania każdego uruchomionego procesu Firefox:

$ ps -ef | Grep Firefox

Jeśli znasz nazwę procesu docelowego, możemy użyć polecenia PIDOF, aby bezpośrednio zdobyć PID.

$ pidof Firefox

Kolejnym interesującym poleceniem do wykonania zadania jest PGREP. Działa bezpośrednio na liście obecnie działających procesów. Polecenie PGREP przyjmie nazwę procesu jako parametr i wydrukuje PID dowolnego pasującego wpisu.

$ pgrep Firefox

Zwróć uwagę na PID procesu docelowego. Następna sekcja tego artykułu zaprezentuje zakończenie procesu przez jego PID.

Zabijanie procesu

Zabicie procesu wymaga wysłania sygnału terminalowego do procesu. Nie ma jednak jednego sygnału zakończenia. Istnieje kilka z nich, każda działająca nieco inaczej niż inne. Dlatego ważne jest, aby je najpierw zrozumieć.

Linux zabija sygnały

Komenda Kill w Linux jest odpowiedzialna za wysyłanie sygnałów terminowych. Aby uzyskać szczegółowe wyjaśnienie, sprawdź ten przewodnik na polecenie Linux Kill. Krótko mówiąc, mówisz komendzie Kill, jaki sygnał wysłać do jakiego procesu (za pomocą PID).

Aby uzyskać pełną listę wszystkich sygnałów zakończenia, uruchom następujące polecenie:

$ Kill -l

W większości jednak będziemy potrzebować tylko garstki. Oto szczegółowe wyjaśnienia najczęstszych sygnałów rozwiązania, o których powinieneś wiedzieć.

  • Sigup (1) - Terminal sterujący jest zawiesiony lub proces kontrolowania jest martwy. W takiej sytuacji SIGUP ponownie załaduje pliki konfiguracyjne i otworzyć/zamykać pliki dziennika.
  • Sigkill (9) - To bezpośredni sygnał zabijania do procesu docelowego. Powinien być używany jako ostateczna rezygnacja z procesu. Jeśli proces zostanie zakończony za pomocą Sigkill, nie zapisuje danych ani nie wyczyszcza się po zakończeniu procesu.
  • Sigterm (15) - Wysyła sygnał zakończenia do procesu docelowego. Sigterm jest domyślnym sygnałem do wysłania. Jest to również uważane za najbezpieczniejszą metodę zakończenia procesu.

Zabijanie procesu za pomocą zabójstwa

Jest to domyślny sposób zakończenia procesu docelowego w Linux. Polecenie Kill jest zgodne z następującą strukturą polecenia:

$ zabój -

Na przykład, aby wysłać Sigterm do procesu, polecenie wyglądałoby tak:

$ Kill -15

Podobnie, jeśli chcesz wysłać Sigkill, użyj następującego polecenia:

$ Kill -9

Dowiedz się więcej o komendzie Linux Kill z dogłębnymi wyjaśnieniami i przykładami.

Zabijanie wielu procesów za pomocą Killall

Komenda Killall działa podobne do zabicia. Jednak zamiast definiować określony PID, używa nazwy procesu i wysyła określony sygnał terminu do wszystkich procesów pasujących do nazwy.

Struktura dowodzenia Killall wygląda tak:

$ Killall -

Na przykład następujące polecenie Killall wyśle ​​Sigterm do wszystkich działających procesów Firefox:

$ Killall -15 Firefox

Sprawdź ten przewodnik na polecenie Linux Killall, aby uzyskać szczegółowe wyjaśnienia z przykładami. Zaleca się również sprawdzenie strony Man of Killall:

$ Man Killall

Zabijanie wielu procesów za pomocą Pkilla

Podobnie jak polecenie Killall, Pkill może również wyszukiwać procesy na podstawie nazwy i wysyłać określony sygnał terminowy. Struktura poleceń jest również prawie podobna;

$ pkill -

Na przykład użyj następującego polecenia PKILL, aby zakończyć proces Firefox za pomocą Sigterm:

$ pkill -15 Firefox

Jak zawsze, sprawdź stronę Pkill dla szczegółowych wyjaśnień ze wszystkimi niuansami:

$ Man Pkill

Końcowe przemyślenia

Ten przewodnik pokazuje różne sposoby zabijania procesu przez PID. Pokazuje także alternatywne metody wykorzystujące nazwę procesu zamiast PID. Zawsze lepiej jest mieć do dyspozycji wiele narzędzi. Tutaj użyliśmy poleceń PS i PGREP, aby znaleźć PID i zabójstwo, Pkill i Killall Polecenia do zabijania procesów.

W wielu sytuacjach możesz chcieć pozbyć się nieznośnych procesów w tle, które są nieprawidłowe. Dowiedz się więcej o identyfikowaniu procesów tła w Linux. Następnie, zgodnie z metodami w tym przewodniku, możesz łatwo pozbyć się niechcianych.
Szczęśliwy komputer!