Jak zabić proces w systemie Linux

Każdy z nas doświadczył momentów, gdy komputer działał wyjątkowo wolno, zacinając się nawet podczas wykonywania prostych zadań. W systemie Windows do monitorowania i zamykania obciążających pamięć procesów służy Menedżer zadań. W systemie Linux mamy do dyspozycji znacznie szerszy zakres narzędzi, zarówno wiersza poleceń, jak i interfejsu graficznego. Ten artykuł przedstawi kilka prostych metod, za pomocą których można zakończyć działanie procesu w systemie Linux, korzystając z linii komend oraz graficznego interfejsu użytkownika.

Zamykanie Procesów w Linuxie (2023)

Zanim przejdziemy do szczegółów zarządzania procesami w Linuxie, warto zrozumieć, czym właściwie jest proces i jaki jest identyfikator procesu w systemach operacyjnych opartych na tym jądrze.

Co to są procesy w Linuxie?

W Linuksie każde aktualnie uruchomione wystąpienie programu nazywane jest „procesem”, natomiast plik wykonywalny jest określany mianem programu. Kiedy program jest uruchamiany, tworzony jest proces, któremu przypisywany jest unikalny, 5-cyfrowy numer identyfikacyjny, znany jako „identyfikator procesu”. Po zakończeniu działania procesu lub jego przymusowym zamknięciu, jego identyfikator zostaje przypisany do kolejnego procesu w kolejce.

Zamykanie Procesów za Pomocą Wiersza Poleceń w Linuksie

Korzystanie z terminala może początkowo wydawać się mniej intuicyjne niż używanie graficznych narzędzi do podstawowych zadań. Jednakże zarządzanie procesami staje się znacznie prostsze, gdy opanujemy odpowiednie polecenia i ich opcje.

Sygnały Zakończenia

Podczas próby zamknięcia procesu, czy to za pomocą interfejsu graficznego, czy wiersza poleceń, jądro systemu Linux wysyła do niego sygnał. Proces reaguje na ten sygnał, w zależności od jego rodzaju. Każdemu sygnałowi przypisana jest określona wartość liczbowa, aby ułatwić jego rozpoznawanie przez programy. Istnieje wiele rodzajów sygnałów, ale poniżej omówimy najważniejsze:

SygnałWartość liczbowaOpisSIGHUP1Oznacza „Sygnał Zawieszenia”
Wysyłany, gdy zamykany jest terminal.SIGINT2Oznacza „Sygnał Przerwania”
Wysyłany, gdy użytkownik chce zakończyć proces.SIGKILL9Oznacza „Sygnał Zabicia”
Używany, gdy trzeba natychmiast zakończyć działanie procesu.SIGTERM15Oznacza „Sygnał Zakończenia”
Wysyłany, gdy proces ma zakończyć działanie i zwolnić wykorzystane zasoby.SIGSTOP19 – dla ARM, x86
17 – dla ALFA
23 – dla MIPS
24 – dla PA-RISCOznacza „Sygnał Zatrzymania”
Używany, gdy proces ma zostać wstrzymany z możliwością wznowienia w przyszłości.Najczęściej stosowane sygnały to SIGKILL (9) i SIGTERM (15).

Identyfikacja Identyfikatorów Procesów

Przed zakończeniem procesu, trzeba poznać jego szczegóły, takie jak identyfikator, czas działania itp. Aby wyświetlić te informacje, użyj polecenia `ps`:

ps

Polecenie `ps` wyświetla listę procesów, którą należy przeszukać, aby znaleźć interesujący nas proces, co może być uciążliwe. Zamiast tego, można użyć polecenia `grep` w połączeniu z `ps`, jak pokazano poniżej:

ps | grep <nazwa_procesu>

Dla uproszczenia, istnieje również polecenie, które pokazuje tylko identyfikator procesu. Składnia tego polecenia to:

pidof <nazwa_procesu>

Zamykanie Procesu za Pomocą Polecenia `kill`

Po uzyskaniu identyfikatora procesu, który chcemy zakończyć, najczęściej używanym poleceniem jest `kill`. Składnia tego polecenia to:

kill <sygnał> <identyfikator_procesu>

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

Zamykanie Procesu za Pomocą Polecenia `pkill`

Jeśli wyszukiwanie identyfikatora procesu wydaje się niewygodne, można użyć polecenia `pkill`. Wyszukuje ono procesy pasujące do określonego wzorca i je zamyka. Składnia polecenia `pkill` to:

pkill <opcje> <wzorzec>

Kilka popularnych opcji używanych z `pkill`:

OpcjaOpis-nZaznacza tylko ostatni pasujący do wzorca proces.-uZaznacza procesy należące do konkretnego użytkownika.-xZaznacza procesy dokładnie pasujące do wzorca.

Jest to szczególnie przydatne, gdy wielu użytkowników pracuje nad różnymi instancjami tego samego programu i jedna z nich działa niepoprawnie. Poniższy przykład pokazuje, jak zamknąć instancję programu „gedit” należącą do użytkownika „intel” za pomocą polecenia `pkill`:

pkill -u intel gedit

Zamykanie Procesu za Pomocą Polecenia `killall`

Polecenie `killall` działa podobnie do `kill`, ale zamyka wszystkie procesy pasujące do podanej nazwy, niezależnie od użytkownika. Domyślnie wysyła sygnał SIGTERM, chyba że podano inny. Warto zauważyć, że `killall` nie może zakończyć swojego własnego procesu, ale może zakończyć inne wystąpienia tego polecenia. Składnia polecenia `killall` to:

killall <opcje> <nazwa_procesu>

Niektóre opcje, które można używać z `killall`:

OpcjaOpis-rInterpretuje `nazwa_procesu` jako wyrażenie regularne, a następnie zamyka procesy pasujące do wzorca.-uZamyka określony proces należący do wskazanego właściciela.-oZamyka określone procesy starsze niż dany czas.-yZamyka określone procesy nowsze niż dany czas.

Polecenie `killall` jest przydatne do zamykania serii identycznych procesów, lub wszystkich procesów należących do określonego użytkownika. W poniższym przykładzie, używamy `killall`, aby zakończyć wszystkie procesy o nazwie „sleep 500”, w systemie Linux:

killall -v sleep

Zamykanie Procesów w Linuxie za Pomocą Poleceń `top`/`htop`

Ta metoda jest szczególnie użyteczna, gdy nie wiemy, które procesy obciążają system. Oba polecenia pozwalają nawigować po wszystkich uruchomionych procesach i szybko je zakończyć. Aby użyć polecenia `top` do monitorowania zasobów, wpisz w terminalu:

top

Zrozumienie wyświetlanych danych:

Główne wyjście `top` jest podzielone na kolumny, które przedstawiają:

  • PID – Identyfikator uruchomionego procesu.
  • USER – Właściciel procesu.
  • PR – Priorytet procesu nadany przez system operacyjny.
  • NI – Wartość priorytetu, pozwalająca użytkownikowi na ręczne sterowanie priorytetem zadania.
  • VIRT – Ilość pamięci wirtualnej wykorzystywanej przez proces.
  • RES – Ilość pamięci fizycznej wykorzystywanej przez proces.
  • SHR – Ilość pamięci współdzielonej z innymi procesami.
  • S – Aktualny stan procesu, który może być:
    • D – Uśpienie nieprzerwane.
    • R – Uruchomiony.
    • S – Uśpiony.
    • T – Zatrzymany.
    • Z – Zombie.
  • %CPU – Procent użycia procesora przez proces.
  • %MEM – Procent pamięci RAM wykorzystywanej przez proces.
  • TIME+ – Całkowity czas trwania procesu.
  • COMMAND – Nazwa polecenia wywołanego dla procesu.
  • Jeśli nie znamy identyfikatora procesu, który chcemy zakończyć, możemy nawigować po liście za pomocą strzałek, lub wyszukać nazwę procesu w tabeli.

    Aby wyszukać nazwę procesu, naciśnij „L” i wpisz nazwę szukanego procesu. Po jego znalezieniu, naciśnij „k”, aby go zamknąć. Następnie wpisz identyfikator procesu lub pozostaw domyślnie podświetlony i naciśnij „ENTER”. Potem wprowadź sygnał zakończenia i naciśnij „ENTER”, aby zakończyć proces. Aby wrócić do terminala, naciśnij „q”.

    Chociaż polecenie `top` pokazuje szczegółowe informacje, nie jest zbyt przyjazne dla początkujących, ponieważ nie zawiera opisu skrótów klawiszowych, ani sposobu ich używania. Z drugiej strony, `htop` ma bardziej przejrzysty interfejs, nawet dla narzędzia wiersza poleceń. Co więcej, pokazuje wszystkie informacje w osobnym widoku, dzięki czemu nie zagraca okna terminala. Polecenie to nie jest domyślnie zainstalowane, więc należy użyć następującego polecenia, aby je zainstalować:

    sudo apt install -y htop

    Aby użyć `htop` do zarządzania procesami, wpisz:

    htop

    Aby zamknąć proces, przejdź do jego nazwy, naciśnij „F9”, a następnie „ENTER”. Aby wyszukać i zamknąć proces, naciśnij „F3”, wpisz nazwę i naciśnij „ENTER”. Gdy nazwa procesu zostanie podświetlona, naciśnij „F9”, a potem „ENTER” aby zamknąć proces.

    Zamykanie Procesów za Pomocą Monitora Systemu w Linuxie

    Jeśli wiersz poleceń wydaje Ci się zbyt skomplikowany, możesz skorzystać z wbudowanego narzędzia do monitorowania systemu, które znajduje się w każdej dystrybucji Linuksa. Aby je uruchomić, otwórz Monitor Systemu z menu aplikacji i wykonaj poniższe kroki.

    1. Po uruchomieniu Monitora Systemu, zobaczysz trzy zakładki na górze: Procesy, Zasoby i System plików. Aby zarządzać procesami, przejdź do zakładki „Procesy”. Znajdziesz tam wszystkie aktualnie uruchomione procesy. Naciśnij „CTRL+F”, aby wyszukać nazwę procesu. Następnie kliknij nazwę procesu, który chcesz zakończyć, i wybierz opcję „Zakończ proces”.

    2. Pojawi się okno z pytaniem, czy na pewno chcesz zakończyć proces. Potwierdź, klikając duży czerwony przycisk „Zakończ proces”, aby zakończyć proces w Linuxie.

    Często Zadawane Pytania

    Jak zatrzymać wszystkie procesy w systemie Linux?

    Aby zatrzymać wszystkie procesy danego użytkownika (z wyjątkiem powłoki logowania, init i procesów specyficznych dla jądra), użyj poleceń `pkill` lub `killall` zgodnie ze składnią:

    pkill -u <nazwa użytkownika>

    killall -u <nazwa użytkownika>

    Aby zatrzymać wszystkie procesy wszystkich użytkowników, włącznie z systemem init, naciśnij „ALT + Prt Sc + o”.

    Czy zamykanie procesów jest bezpieczne?

    Kiedy zamykasz procesy działające w tle, które nie są niezbędne lub te, które zużywają dużo pamięci, uwalniasz zasoby, które mogą zostać wykorzystane przez inne procesy. Zanim jednak zamkniesz proces, upewnij się, że nie zamykasz ważnego procesu systemu operacyjnego.

    Czym są procesy w tle w systemie Linux?

    W Linuksie procesy w tle to procesy, które mogą działać bez interakcji z użytkownikiem. Można je przeglądać za pomocą poleceń takich jak `top`, `htop`, `ps`.

    Co to jest proces zombie?

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

    Co robi kombinacja CTRL + Z w Linuksie?

    Kiedy używasz CTRL + Z w Linuksie, wysyłany jest sygnał SIGTSTP, który zawiesza proces i przenosi go do tła. Zawieszony proces nie może zostać zakończony, dopóki nie zostanie przeniesiony na pierwszy plan.

    Łatwe Zamykanie Procesów w Systemie Linux

    Zamykanie procesów pochłaniających pamięć jest bardzo ważną umiejętnością dla każdego użytkownika. W tym artykule omówiliśmy zarówno metody wiersza poleceń, wykorzystujące polecenia takie jak `killall` i `pkill`, jak i metody graficzne, które umożliwiają zamykanie procesów w Linuxie. Szczegółowo opisaliśmy także, jak używać popularnych narzędzi `top` i `htop` do zarządzania procesami. Jeśli napotkasz jakiekolwiek trudności podczas zamykania procesów, daj nam znać w komentarzach poniżej.