Jak zabić proces w systemie Linux

Wszyscy mieliśmy takie dni, kiedy nasz komputer działał wyjątkowo wolno i zacinał się podczas wykonywania nawet podstawowych zadań. W systemie Windows masz tylko Menedżera zadań systemu Windows do sprawdzania i zabijania procesów, które nie są tak ważne, ale zużywają ogromne ilości pamięci. Jednak w Linuksie masz cały arsenał poleceń i narzędzi GUI do zarządzania tymi zadaniami. W tym artykule pokażemy kilka łatwych metod wiersza poleceń (CLI), a także metody GUI do zabijania procesu w systemie Linux.

Zakończ proces w systemie Linux (2023)

Ale zanim zagłębimy się w świat zarządzania procesami w Linuksie, zrozumiemy, czym dokładnie jest proces i jaki jest identyfikator procesu w systemach Linux.

Czym są procesy w systemie Linux

W Linuksie każda aktualnie działająca instancja programu jest nazywana „procesem”, podczas gdy każdy plik wykonywalny jest nazywany programem. Gdy dowolny program jest wykonywany, tworzony jest proces, a każdemu procesowi przypisywany jest unikalny 5-cyfrowy numer identyfikacyjny znany jako „identyfikator procesu”. Gdy proces zakończy wykonywanie lub zostanie zakończony na siłę, jego identyfikator procesu zostaje przypisany do procesu następnego w kolejce.

Zabij proces za pomocą wiersza poleceń w systemie Linux

Chociaż korzystanie z terminala może czasami wydawać się onieśmielające w porównaniu z używaniem narzędzi GUI do podstawowych zadań, zarządzanie różnymi procesami staje się znacznie łatwiejsze, gdy poznasz polecenia i ich różne opcje.

Sygnały zakończenia

Kiedy próbujesz zabić proces z GUI lub CLI w Linuksie, jądro wysyła do procesu sygnał zakończenia. Proces działa odpowiednio, w zależności od odbieranego sygnału. Każdemu z tych sygnałów przypisany jest określony numer, aby program mógł go szybko zrozumieć. Istnieje wiele rodzajów sygnałów zakończenia, ale wyjaśniliśmy tutaj tylko te najważniejsze:

SignalWartośćliczbowaOpisSIGHUP1Oznacza „Zawieszenie sygnału”
Jest wysyłany, gdy terminal jest zamknięty.SIGINT2Oznacza „Przerwanie sygnału”
Jest wysyłany, gdy użytkownik zakończy proces.SIGKILL9Oznacza „Signal Kill”
Jest wysyłany, gdy trzeba natychmiast zakończyć procesSIGTERM15Oznacza to „zakończenie sygnału”
Jest wysyłany, gdy trzeba zakończyć proces i zwolnić zużywane zasobySIGSTOP19 – dla ARM, x86
17 – dla ALFA
23 – dla MIPS
24 – dla PA-RISCIt oznacza „Zatrzymanie sygnału”
Jest wysyłany, gdy trzeba wstrzymać proces i wznowić go później. Najczęściej używanymi sygnałami są SIGKILL (9) i SIGTERM (15).

Zidentyfikuj identyfikatory procesów

Zanim zakończysz proces, musisz znać pewne szczegóły procesu, takie jak identyfikator procesu, czas działania itp. Aby poznać szczegóły procesu, użyj polecenia ps:

ps

Za pomocą polecenia ps musisz wyszukać proces, przewijając i zapisując jego nazwę, co może być uciążliwe. Zamiast tego możesz nawet użyć polecenia grep z poleceniem ps w potoku, jak pokazano poniżej:

ps | grep

Aby uprościć sprawę, istnieje osobne polecenie, które pokazuje tylko identyfikator procesu dowolnego uruchomionego procesu, który musisz znać. Składnia polecenia pidof to:

pidof

Zakończ proces za pomocą polecenia kill

Po zanotowaniu identyfikatora procesu, który chcesz zakończyć, najczęstszym poleceniem używanym do kończenia programów w systemie Linux jest polecenie kill. Składnia polecenia kill to:

zabij

Parametr jest opcjonalny, a polecenie kill domyślnie wysyła sygnał SIGTERM (15). Możesz wysłać dowolny inny sygnał poprzez jego wartość liczbową lub rzeczywistą nazwę sygnału z powyższej tabeli.

Zakończ proces za pomocą polecenia pkill

Jeśli uważasz, że wyszukiwanie identyfikatora procesu jest niewygodne, możesz użyć polecenia pkill. Wyszukuje procesy pasujące do wzorca, a następnie je zabija. Składnia polecenia pkill to:

pkill

Niektóre z typowych opcji parowania z poleceniem pkill to:

OptionDescription-nWybiera tylko najnowsze procesy pasujące do identyfikatora procesu-uWybiera procesy należące do określonego użytkownika-xWybiera procesy dokładnie pasujące do wzorca

Jest to szczególnie ważne, gdy wielu użytkowników pracuje nad różnymi instancjami tego samego programu w tym samym systemie i jedna z instancji zaczyna zachowywać się nieoczekiwanie. Na przykład na poniższym zrzucie ekranu zabijamy instancję „gedit” należącą do użytkownika „intel” za pomocą polecenia pkill w systemie Linux:

pkill -u Intel gedit

Zakończ proces za pomocą polecenia killall

Polecenie killall działa podobnie do polecenia kill, ale zabija wszystkie procesy pasujące do nazwy procesu, niezależnie od użytkownika. Domyślnie wysyła sygnał SIGTERM, jeśli nie określono inaczej. Warto zauważyć, że polecenie killall nigdy nie może samo się zabić, ale może zakończyć inne wystąpienia polecenia killall. Składnia polecenia killall jest następująca:

killall

Niektóre opcje parowania z poleceniem killall to:

OptionDescription-rInterpretuje nazwę_procesu jako wzorzec wyrażenia regularnego, a następnie zabija procesy pasujące do wzorca-ukzabija określony proces należący do określonego właściciela.-oZabija określone procesy starsze (rozpoczęte wcześniej) niż określony czas.-yZabija określone procesy młodsze ( rozpoczęty po) określonym czasie.

Polecenie killall może być przydatne do zakończenia serii tego samego procesu lub nawet wszystkich procesów należących do określonego właściciela. Tutaj w naszym przykładzie zabijamy wszystkie procesy „spania przez 500 sekund” za pomocą polecenia killall w systemie Linux:

killall -v sen

Zakończ proces systemu Linux za pomocą polecenia top/htop

Ta metoda zabijania procesów jest przydatna, gdy nie masz pojęcia, które procesy zużywają maksymalne zasoby. W obu poleceniach możesz nawigować po wszystkich uruchomionych procesach, a nawet procesach zombie i szybko je zakończyć. Aby użyć polecenia top do monitorowania zasobów, użyj składni w terminalu:

szczyt

Zrozumienie danych wyjściowych:

Główne wyjście polecenia top jest podzielone na kolumny, którymi są:

  • PID – pokazuje identyfikator uruchomionego procesu
  • Użytkownik – pokazuje właściciela procesu
  • PR – pokazuje wartość priorytetu procesu nadawanego przez system operacyjny
  • NI – pokazuje ładne wartości, które przypominają przypisywanie wartości odstępowanych od użytkownika w celu ręcznego sterowania priorytetem zadania.
  • VIRT – pokazuje ilość pamięci wirtualnej używanej przez proces.
  • RES – pokazuje ilość pamięci fizycznej używanej przez proces
  • SHR – pokazuje ilość pamięci współdzielonej przez inne procesy
  • S – pokazuje aktualny stan procesu, który może być:
    • D – nieprzerwany sen
    • R – bieganie
    • S – spanie
    • T- zatrzymał się
    • Z-zombie
  • %CPU — pokazuje ilość procesora wykorzystaną przez proces w procentach
  • %MEM – Pokazuje ilość pamięci RAM wykorzystywanej przez proces w procentach
  • TIME+ – Pokazuje całkowity czas trwania procesu
  • Polecenie — pokazuje, które polecenie zostało wywołane dla procesu.
  • Jeśli nie znasz identyfikatora procesu zadania, które chcesz zabić, poruszaj się po liście za pomocą klawiszy strzałek lub wyszukaj nazwę procesu w tabeli procesów w systemie Linux.

    Aby wyszukać nazwę procesu, naciśnij klawisz „L” na klawiaturze i wpisz nazwę procesu, który chcesz wyszukać. Po znalezieniu nikczemnego procesu naciśnij „k” na klawiaturze, aby go zabić. Teraz wprowadź identyfikator procesu lub pozostaw go przy aktualnie podświetlonym procesie i naciśnij „ENTER”. Następnie wprowadź sygnał zakończenia, a następnie naciśnij „ENTER”, aby zabić program. Aby wrócić do terminala, naciśnij „q” na klawiaturze.

    Chociaż górne polecenie pokazuje szczegóły, takie jak identyfikator procesu, zużycie pamięci i inne dla wszystkich uruchomionych procesów, nie jest odpowiednie dla początkujących, ponieważ nie pokazuje żadnych mapowań klawiszy ani sposobu ich używania. Z drugiej strony polecenie htop ma bardziej przyjazny dla użytkownika interfejs, nawet dla narzędzia wiersza poleceń. Ponadto pokazuje wszystkie szczegóły w osobnym widoku, dzięki czemu nie zaśmieca okna terminala. Nie jest preinstalowany w większości dystrybucji i musisz użyć następującego polecenia, aby zainstalować htop w systemie Linux:

    sudo apt install -y htop

    Aby używać htop do zarządzania procesami w systemie Linux, użyj poniższego polecenia:

    Htop

    Aby zabić program, przejdź do nazwy procesu, który chcesz zakończyć, naciśnij „F9”, a następnie naciśnij Enter. Jeśli chcesz wyszukać i zabić dowolny program, naciśnij „F3” na klawiaturze, wpisz nazwę i naciśnij Enter. Nazwa procesu zostanie podświetlona, ​​naciśnij klawisz F9, a następnie naciśnij klawisz Enter na klawiaturze, aby zakończyć proces.

    Zabij proces za pomocą Monitora systemu w systemie Linux

    Jeśli uważasz, że metoda wiersza poleceń jest dla Ciebie trudna, możesz skorzystać z wbudowanego narzędzia do monitorowania systemu, które jest dostępne w każdej dystrybucji Linuksa. Aby dowiedzieć się, jak to działa, otwórz narzędzie monitora systemu z menu Aplikacje i wykonaj poniższe czynności.

    1. Po otwarciu narzędzia monitora systemu zobaczysz trzy zakładki u góry o nazwach — Procesy, Zasoby i System plików. Aby zarządzać swoimi procesami, przejdź do zakładki „Procesy”. Tutaj zobaczysz wszystkie aktualnie uruchomione procesy. Naciśnij „CTRL+F”, aby wyszukać nazwę procesu. Kliknij nazwę procesu, który chcesz zakończyć, i kliknij „Zakończ proces”.

    2. Następnie pojawi się monit o potwierdzenie, czy chcesz zakończyć proces, czy nie. Śmiało i kliknij duży czerwony przycisk „Zakończ proces”, aby zabić proces w systemie Linux.

    Często Zadawane Pytania

    Jak zatrzymać wszystkie procesy w systemie Linux?

    Jeśli chcesz zatrzymać wszystkie procesy (z wyjątkiem powłoki logowania, init i procesów specyficznych dla jądra) dla określonego użytkownika w systemie Linux, użyj polecenia pkill lub polecenia killall zgodnie ze składnią:

    pkill -u

    killall -u

    Jeśli musisz zabić każdy proces dla każdego użytkownika, w tym system init, naciśnij klawisze „ALT + Prt Sc + o” na klawiaturze.

    Czy można zakończyć proces?

    Kiedy zamkniesz nieistotny proces w tle lub proces użytkownika, który zużywa dużo pamięci systemowej, zwolnisz zasoby, które mogą być teraz wykorzystane przez inne procesy. Ale zanim zamkniesz jakikolwiek proces, upewnij się, że nie zabijasz istotnego procesu systemu operacyjnego.

    Jakie są procesy w tle w systemie Linux?

    W Linuksie procesy w tle to procesy, które mogą działać bez instancji powłoki lub jakiejkolwiek interwencji użytkownika. Można je przeglądać za pomocą dowolnego polecenia – top, htop, ps itp.

    Co to jest proces zombie?

    Proces, który został zabity przez użytkownika, ale nadal zajmuje pamięć, jest nazywany procesem zombie.

    Co robi CTRL + Z w Linuksie?

    Kiedy używasz CTRL + Z w Linuksie, wysyła sygnał SIGTSTP, który zawiesza proces i wysyła go w tle. Gdy proces jest w tle w stanie zawieszenia, nie można go zabić, dopóki nie zostanie przywrócony na pierwszy plan.

    Łatwe zabijanie procesów w systemie Linux

    Zabijanie procesów pochłaniających pamięć jest dość kluczowym zadaniem, którego każdy użytkownik powinien się nauczyć. W tym artykule pokazaliśmy zarówno metodę wiersza poleceń, w tym polecenia takie jak killall i pkill, a także metody GUI do zabijania procesów w systemie Linux. Opisaliśmy nawet szczegółowo, jak używać popularnych narzędzi, takich jak top i htop, do zarządzania procesami na komputerze z systemem Linux. Jeśli napotkasz jakiekolwiek problemy podczas używania tych narzędzi do zabijania procesu, daj nam znać w komentarzach poniżej.