CodeGym /Kursy /Docker SELF /Zakończenie procesów: komendy `kill`, `killall`, `pkill`

Zakończenie procesów: komendy `kill`, `killall`, `pkill`

Docker SELF
Poziom 2, Lekcja 5
Dostępny

1. Zamykanie procesów

Dzisiaj zrobimy krok dalej i opanujemy komendy, które pozwalają skutecznie zamykać procesy. Przygotuj się, bo twoja cierpliwość do "zawieszających się" programów wkrótce się skończy!

Każda uruchomiona aplikacja lub komenda w Linux to proces. Ale co zrobić, jeśli program się zawiesił, zużywa 100% zasobów procesora lub po prostu przestał działać jak należy? Zadanie administratora (lub dewelopera) – interweniować i zamknąć "buntowniczy" proces. W Linuxie do tego służy cała gama narzędzi: kill, killall i pkill. Nie martw się, mimo groźnych nazw, nie jesteśmy tutaj po to, żeby niszczyć wszystko na swojej drodze. Bardziej chodzi o elegancki sposób na przywrócenie porządku.


2. Komenda kill

Podstawy

Komenda kill zamyka proces na podstawie jego identyfikatora (PID). PID to unikalny numer przypisany do każdego procesu przez system. Na przykład, jeśli chcesz zakończyć proces o PID 1234, użyj następującej komendy:

kill 1234

Linux jest dość elastyczny, dlatego komenda kill wysyła procesowi nie rozkaz "umrzyj", ale prośbę o zakończenie. Ta prośba to tzw. "sygnał". Domyślnie kill wysyła sygnał SIGTERM (15).

Co to jest sygnał?

Linux używa sygnałów do komunikacji z procesami. To jak wysyłanie pocztówek z różnymi intencjami:

  • SIGTERM (15): "Proszę, zakończ się". To grzeczna prośba do procesu o zakończenie działania.
  • SIGKILL (9): "Koniec, jesteś zwolniony!" Wymuszone zakończenie procesu.
  • SIGHUP (1): "Hej, przeładuj konfigurację". Używane do restartu niektórych procesów bez ich kończenia.

Przykład wymuszonego zamknięcia procesu:

kill -9 1234

Jeśli proces odmawia zakończenia po sygnale SIGTERM, możesz wysłać bardziej zdecydowany sygnał — SIGKILL.

Jak sprawdzić PID procesu?

Aby użyć komendy kill, musisz znać PID procesu. Tutaj pomocne mogą być dobrze znane komendy ps, top lub htop. Na przykład wynik komendy ps aux pokaże wszystkie uruchomione procesy:

ps aux | grep firefox

To zapytanie znajdzie proces Firefox i wyświetli jego PID.

Proces zakończony, możesz odetchnąć z ulgą. Ale co zrobić, jeśli "zawieszonych" procesów jest kilka? Tutaj do akcji wchodzą komendy killall i pkill.


3. Komenda killall

Wygoda masowego zamykania

Komenda killall pozwala zamknąć wszystkie procesy o określonej nazwie. Nie musisz ręcznie szukać PID, wszystko jest o wiele prostsze. Na przykład, jeśli chcesz zamknąć wszystkie instancje Firefox:

killall firefox

Tak jak komenda kill, killall wysyła procesom sygnały. Możesz określić konkretny sygnał:

killall -9 firefox

Przydatna wskazówka

Bądź ostrożny z komendami typu killall. Jeśli przypadkowo wskażesz zbyt ogólny proces, na przykład killall python, możesz zakończyć jednocześnie wszystkie uruchomione aplikacje Python, w tym zadania serwerowe czy ważne skrypty.

Jakie sygnały są obsługiwane?

Dla wszystkich komend kill, killall i pkill listę dostępnych sygnałów możesz zobaczyć za pomocą komendy:

kill -l

4. Polecenie pkill

Wyszukiwanie procesów po nazwie (lub jej części)

Polecenie pkill działa podobnie do killall, ale jest bardziej elastyczne. Pozwala zakończyć procesy, które pasują do określonego wzorca. Na przykład:

pkill fire

Polecenie zakończy wszystkie procesy, które zawierają słowo "fire" w nazwie. To jest przydatne w przypadkach, gdy nazwa procesu jest długa lub znasz tylko jej część.

Zakończenie procesów konkretnych użytkowników

Możesz zakończyć procesy należące do określonych użytkowników. Na przykład:

pkill -u username

To zakończy wszystkie procesy należące do użytkownika username.

Porównanie kill, killall i pkill

Polecenie Cechy
kill Zakończenie procesu po PID. Działa precyzyjnie.
killall Zakończenie wszystkich procesów o podanej nazwie. Przydatne do masowego zamykania.
pkill Zakończenie procesów po nazwie lub wzorcu. Obsługuje dodatkowe parametry, takie jak nazwa użytkownika.

5. Praktyka: zamykamy procesy

Spróbujmy teraz wszystkiego, czego się nauczyliśmy, w praktyce. Na początek uruchomimy kilka długo działających procesów:

sleep 300 &
sleep 400 &
sleep 500 &

Te komendy utworzą trzy procesy w tle z różnym czasem oczekiwania. Teraz możesz pracować z komendami kill, killall i pkill.

  1. Wyświetl wszystkie uruchomione procesy sleep za pomocą komendy ps:
ps aux | grep sleep

Zobaczysz PID każdego procesu.

  1. Zamknij proces z PID, na przykład 1234:
kill 1234
  1. Zamknij od razu wszystkie procesy sleep:
killall sleep
  1. Uruchom jeszcze kilka procesów sleep i zamknij je za pomocą pkill:
pkill sl

6. Typowe błędy i ważne niuanse

Jeśli próbujesz zakończyć proces, do którego nie masz uprawnień (na przykład proces innego użytkownika), polecenie zwróci błąd. Do tego potrzebujesz uprawnień superużytkownika (sudo). Na przykład:

sudo kill 1234

Innym źródłem zamieszania może być użycie zbyt agresywnych sygnałów -9. To jest odpowiednik wyłączenia komputera z gniazdka: system nie zdąży zwolnić zasobów ani zapisać danych. Używaj SIGKILL tylko w ostateczności.

Bądź ostrożny z killall i pkill, zwłaszcza jeżeli zarządzasz serwerem. Zamykanie procesów "na ślepo" może prowadzić do utraty ważnych danych.


Dlaczego warto znać polecenia do zamykania procesów?

Te polecenia mają szeroki zakres zastosowań, poczynając od niszczenia zawieszonych aplikacji aż po zarządzanie procesami serwera. Na rozmowach kwalifikacyjnych znajomość kill i pkill może świadczyć o Twojej kompetencji, zwłaszcza jeśli chodzi o administrowanie systemami lub pracę z backendem.

Wykorzystaj tę wiedzę do tworzenia skryptów, które automatycznie zakończą niekontrolowane procesy lub zwolnią zajęte porty. Na przykład przed uruchomieniem serwera, który używa portu 8080, można użyć:

pkill -f "port 8080"

Elastyczność i moc tych poleceń czynią je niezastąpionymi narzędziami każdego specjalisty Linux.

1
Zadanie
Docker SELF, poziom 2, lekcja 5
Niedostępne
Zakończenie procesu za pomocą PID
Zakończenie procesu za pomocą PID
1
Zadanie
Docker SELF, poziom 2, lekcja 5
Niedostępne
Zakończenie wszystkich procesów o tej samej nazwie
Zakończenie wszystkich procesów o tej samej nazwie
1
Zadanie
Docker SELF, poziom 2, lekcja 5
Niedostępne
Zakończenie procesów na podstawie wzorca
Zakończenie procesów na podstawie wzorca
1
Zadanie
Docker SELF, poziom 2, lekcja 5
Niedostępne
Zakończenie procesów określonego użytkownika
Zakończenie procesów określonego użytkownika
Komentarze (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Aleo o Poziom 6, Poland, Poland
31 marca 2026
maybe some tutorial about awk , su, head, $() . Task are rigid conditions, and additionally course doesn't provide knowledge to solve tasks