Wyszukiwanie w witrynie

Jak zabić proces systemu Linux za pomocą Kill, Pkill i Killall


W Linuksie zabicie procesu oznacza zakończenie lub zatrzymanie wykonywania działającego programu. Każdemu działającemu procesowi przypisany jest unikalny numer identyfikacyjny znany jako Identyfikator procesu (PID), który pomaga systemowi śledzić aktualnie aktywne procesy.

W tym artykule dowiemy się o procesie zabijania w systemie Linux oraz o tym, jak znaleźć i zakończyć proces za pomocą różnych narzędzi i poleceń w systemie Linux.

Jaki jest proces w systemie Linux

Mówiąc najprościej, proces przypomina program aktualnie uruchomiony w systemie, a każdy proces ma swój własny specjalny numer identyfikacyjny (PID). Czasami jednak działający program lub proces może działać nieprawidłowo, przestać odpowiadać lub zużywać zbyt dużo zasobów systemowych.

Kiedy tak się stanie, musimy zatrzymać lub „zabić” proces i w tym miejscu przydaje się polecenie zabicia.

Co to jest polecenie zabicia

Polecenie „kill” to kluczowe narzędzie, które umożliwia użytkownikom wysyłanie sygnałów (zatrzymanie lub zakończenie) do aktualnie uruchomionych procesów, instruując ich, aby bezpiecznie zakończyli lub wymusili zakończenie.

Polecenie kill jest przydatne, gdy trzeba zarządzać i kontrolować działania różnych programów w systemie Linux, takich jak:

  • Aby zatrzymać dowolny zautomatyzowany proces.
  • Aby zatrzymać proces, który został uruchomiony przez przypadek.
  • Aby zatrzymać proces zużywający zbyt dużo pamięci.
  • Aby wymusić zakończenie dowolnego uruchomionego procesu w systemie Linux.
  • Aby zatrzymać proces działający w tle.

Użycie polecenia kill z /usr/bin udostępnia dodatkowe funkcje umożliwiające zakończenie procesu według nazwy procesu za pomocą polecenia pkill, które identyfikuje procesy według ich imiona.

Jak znaleźć identyfikator procesu lub nazwę procesu

Przed zakończeniem działającego procesu konieczne jest zidentyfikowanie jego identyfikatora procesu (PID) lub nazwy za pomocą następującego polecenia ps, które wyświetla informacje o wszystkich uruchomionych procesach w systemie wraz z ich PID (identyfikatorem procesu) i innymi informacjami.

ps -ef

Jeśli chcesz znaleźć konkretną nazwę procesu PID, możesz użyć polecenia grep, które wyświetli listę wszystkich procesów uruchomionych w systemie i przefiltruje wyniki, aby wyświetlić tylko te zawierające termin „mariadb„.

ps -ef | grep mariadb

Alternatywnie możesz bezpośrednio znaleźć PID procesu według nazwy, używając polecenia pgrep, jak pokazano.

pgrep mariadb

Jak zabić proces w systemie Linux

Zanim zabijesz, zatrzymasz lub zakończysz proces, pomyśl o uprawnieniach. Jeśli jesteś użytkownikiem root, możesz zatrzymać dowolny proces, ale jeśli jesteś zwykłym użytkownikiem, musisz dodać „sudo” przed poleceniem lub przełączyć się na roota za pomocą „ su”, aby użyć polecenia zakończenia.

Typowa składnia polecenia zabicia jest następująca:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

W przypadku polecenia zakończenia Nazwa sygnału może wyglądać następująco:

Z powyższego zachowania jasno wynika:

  • SIGTERM to domyślny i najbezpieczniejszy sposób na zakończenie procesu.
  • SIGHUP to mniej bezpieczny sposób na zakończenie procesu niż SIGTERM.
  • SIGKILL to najbardziej niebezpieczny spośród trzech powyższych sposobów zabicia procesu, który kończy proces bez zapisywania.

W systemie Linux istnieją różne sygnały, których można użyć do zatrzymania, zakończenia lub wstrzymywania procesów. Możesz wyświetlić listę wszystkich dostępnych sygnałów zabicia wraz z ich nazwami i odpowiadającymi im numerami, używając następującego polecenia, które wyświetli listę

kill -l

Chociaż dostępnych jest wiele sygnałów, w większości przypadków używamy tylko SIGKILL (9) i SIGTERM (15).

Aby zabić proces, musimy znać identyfikator procesu. Proces to instancja programu. Przy każdym uruchomieniu programu automatycznie generowany jest unikalny PID dla tego procesu.

Każdy proces w Linuksie ma pid. Pierwszym procesem rozpoczynającym się po uruchomieniu systemu Linux jest – proces inicjujący, dlatego w większości przypadków przypisuje się mu wartość „1”.

Init to proces główny i nie można go zabić w ten sposób, co gwarantuje, że proces główny nie zostanie przypadkowo zabity. Init decyduje i pozwala się zabić, gdzie kill jest jedynie prośbą o zamknięcie.

Zanim przejdziemy dalej i wykonamy polecenie zabicia, warto zwrócić uwagę na kilka ważnych punktów:

  • Użytkownik może zabić wszystkie swoje procesy.
  • Użytkownik nie może zabić procesu innego użytkownika.
  • Użytkownik nie może zabić procesów, z których korzysta System.
  • Użytkownik root może zabić proces na poziomie systemu i proces dowolnego użytkownika.

Aby zakończyć proces mariadb PID, użyj polecenia kill, jak pokazano.

kill -9 3383

Powyższe polecenie zakończy proces o pid=3383, gdzie PID to Wartość liczbowa procesu.

Inny sposób wykonania tej samej funkcji można przepisać jako.

kill -SIGTERM 3383

Podobnie „kill -9 PID” jest podobne do „kill -SIGKILL PID” i odwrotnie.

Aby potwierdzić zakończenie procesu, możesz ponownie użyć polecenie ps.

ps -ef | grep mariadb

Jak zabić wiele procesów w systemie Linux

Aby zakończyć wiele procesów w systemie Linux przy użyciu ich identyfikatorów procesów (PID), możesz użyć polecenia kill w połączeniu z odpowiednimi numerami PID.

Najpierw zidentyfikuj identyfikatory PID procesów, które chcesz zakończyć, za pomocą polecenia ps lub pgrep.

ps aux | grep apache2
OR
pgrep apache2

Gdy już uzyskasz identyfikatory PID, użyj polecenia kill, aby je zakończyć.

kill -9 PID1 PID2 PID3

Jak zabić proces w systemie Linux przy użyciu nazwy procesu

Aby zakończyć proces używając nazwy procesu, użyjemy polecenia pkill, które jest wersją polecenia kill, która umożliwia podanie nazwy procesu lub wzorca zlokalizować proces.

Przed zabiciem musisz znać nazwę procesu, a wprowadzenie błędnej nazwy procesu może cię wkręcić.

pkill mysqld

Co się stanie, jeśli proces ma zbyt wiele instancji i kilka procesów potomnych, mamy polecenie „killall”, które przyjmuje nazwę procesu jako argument zamiast numeru procesu.

Jak zabić proces w systemie Linux za pomocą polecenia Killall

Główna różnica między killall i kill polega na tym, że killall może zakończyć proces po jego nazwie, podczas gdy polecenie kill opiera się na identyfikatorze procesu (pid).

Aby zabić wszystkie instancje mysql wraz z procesami potomnymi, użyj poniższego polecenia.

killall mysqld
OR
pkill mysqld

Zawsze możesz sprawdzić status procesu, czy jest uruchomiony, czy nie, używając dowolnego z poniższych poleceń.

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

Narzędzia do monitorowania graficznych systemów Linux, takie jak htop lub gnome-system-monitor, zapewniają przyjazny dla użytkownika interfejs do wyszukiwania i zatrzymywania procesów.

Wniosek

To tyle na razie ode mnie. Niedługo wrócę z kolejnym ciekawym i pouczającym tematem. Do tego czasu bądź na bieżąco, połącz się z Tecmint i dbaj o swoje zdrowie. Nie zapomnij podzielić się cennymi opiniami w sekcji komentarzy.