Jak zakończyć proces systemu Linux według numeru portu
Czy zdarzyło Ci się kiedyś, że jakiś proces zajmuje port na Twoim komputerze z Linuksem i po prostu chcesz się go pozbyć? Może zawiesiła się jakaś aplikacja albo martwisz się, że coś podstępnie korzysta z zasobów sieciowych. Niezależnie od przyczyny, wiedza o tym, jak znaleźć i zakończyć ten proces, może oszczędzić Ci wielu problemów. Na szczęście Linux oferuje kilka przydatnych poleceń — fuser, lsof i netstat — które z odrobiną magii wiersza poleceń mogą pomóc zidentyfikować proces korzystający z konkretnego portu i go wyłączyć.
Oczywiście, jeśli nie jesteś przyzwyczajony do pracy w terminalu, może to początkowo wydawać się nieco onieśmielające. Jednak oswojenie się z tymi narzędziami oznacza, że będziesz w stanie rozwiązywać problemy z siecią, zatrzymywać nieprawidłowo działające aplikacje, a nawet dość szybko eliminować potencjalne zagrożenia bezpieczeństwa. Tylko uważaj – zamykanie procesów poleceniem kill -9 nie zawsze jest bezpieczne i może spowodować utratę danych, jeśli nie zachowasz ostrożności.
Jak zamknąć proces systemu Linux za pomocą polecenia fuser
Metoda 1: Używaniefuser
To prawdopodobnie najłatwiejszy sposób.fuserPolecenie informuje, które procesy uzyskują dostęp do danego portu lub zasobu. To bardzo przydatne, gdy znasz tylko numer portu i chcesz zobaczyć, kto się tam kręci.
Dlaczego to pomaga? Wyświetla identyfikatory procesów (PID) powiązane z portem, więc nie trzeba ich długo szukać. Kiedy to działa? Zazwyczaj, gdy port wydaje się być zablokowany lub występują konflikty z powodu „portu już używanego”.Oczekiwania? Uruchomienie fuserspowoduje wyświetlenie identyfikatorów PID, a dodanie ich -kspowoduje zamknięcie tych procesów.
Oto typowa składnia:
fuser -n tcp 80
W razie potrzeby zastąp je „[ tcpbrakuje nazwy]” i wpisz port docelowy. To lista procesów korzystających z portu TCP 80. Aby wyłączyć te procesy, wystarczy dodać :udp80-k
sudo fuser -k -n tcp 80
Uruchomienie jako superużytkownik jest często konieczne, zwłaszcza jeśli nie jesteś właścicielem tych procesów. W niektórych konfiguracjach brak uruchomienia z sudomoże nie wyświetlić wszystkich procesów lub je zamknąć.
Uwaga: Użycie -KILLzamiast -kpowoduje wysłanie sygnału SIGKILL, który wymusza zakończenie procesów bez czyszczenia. Czasami to działa, ale należy pamiętać, że może spowodować utratę danych — należy używać tylko wtedy, gdy sygnał SIGTERM nie działa. Przykład:
sudo fuser -KILL -n tcp 80
Metoda 2: Używanielsof
Innym podejściem, zwłaszcza jeśli chcesz uzyskać szczegółowe informacje o tym, co trzyma port, jest lsofpolecenie. Pokazuje ono otwarte pliki, a gniazda sieciowe to pliki w świecie Linuksa.
Dlaczego warto wybrać tę opcję? Jeśli chcesz szybko wyświetlić listę procesów z ich identyfikatorami PID i informacjami o sposobie ich połączenia. Kiedy z niej korzystać? Zazwyczaj, gdy fusernie jest dostępna lub potrzebujesz więcej informacji. Podstawowe polecenie wygląda tak:
lsof -i tcp:80
Wyświetla procesy nasłuchujące lub połączone przez port TCP 80. Aby uzyskać tylko identyfikatory PID, możesz wykonać następujące czynności:
kill $(lsof -t -i tcp:80)
Jeżeli niektóre procesy odmawiają zamknięcia się po otrzymaniu normalnych sygnałów, możesz wymusić ich zamknięcie za pomocą -9:
kill -9 $(lsof -t -i tcp:80)
Uwaga: Jak zawsze, wymuszone zabijanie może powodować problemy, jeśli procesy wykonują krytyczne zadania. Używaj tego oszczędnie.
Metoda 3: Używanienetstat
Ta opcja jest trochę starsza, ale w wielu przypadkach nadal przydatna.netstatPokazuje aktywne połączenia sieciowe i gniazda nasłuchujące, a także PID-y, jeśli użyjesz odpowiednich flag.
Po co się tym przejmować? Jeśli chcesz zobaczyć, co nasłuchuje na konkretnych portach – może przed wyłączeniem. Kiedy? Gdy system wydaje się mieć zajęte porty, a Ty nie jesteś pewien, przez co. Polecenie może wyglądać tak:
sudo netstat -p tcp -l -n
Ta lista zawiera nasłuchujące gniazda TCP wraz z informacjami o procesach. Aby filtrować według konkretnego portu, takiego jak 80, może być konieczne połączenie jej z innymi narzędziami, takimi jak grep, ponieważ netstatnie filtruje ona bezpośrednio według portu:
sudo netstat -p tcp -l -n | grep :80
Zanotuj PID na wyjściu, a następnie zakończ za pomocą:
sudo kill 1234
Lub, aby zatrzymać siłą:
sudo kill -9 1234
Uwaga: Do większości tych operacji potrzebne będzie sudo, ponieważ netstat często wymaga uprawnień roota, aby zobaczyć wszystkie informacje o procesach. Pamiętaj też, że bezpośrednie usunięcie PID-ów może spowodować zamknięcie niepowiązanych procesów, jeśli nie zachowasz ostrożności, więc sprawdź dokładnie przed wykonaniem poleceń.
Kontroluj swoje aplikacje Linux
Ogólnie rzecz biorąc, te polecenia dają całkiem niezły zestaw narzędzi do usuwania procesów zablokowanych na określonych portach sieciowych. Pamiętaj tylko, aby zachować ostrożność – wymuszone zamykanie procesów za pomocą kill -9może czasami namieszać lub spowodować uszkodzenie danych. W razie wątpliwości spróbuj najpierw łagodniejszego polecenia SIGTERM.
A jeśli masz paranoję na punkcie bezpieczeństwa, to dobry krok, żeby sprawdzić, kto lub co krąży po twoich portach. Albo po prostu wyłączyć jakiś podejrzany proces, który pojawił się przez pomyłkę. Na jednej konfiguracji zadziałało za pierwszym razem, na innej już nie – losowość Linuksa sprawia, że wszystko jest ciekawe.
Bo oczywiście czasami Linux musi być odrobinę trudniejszy, niż to konieczne.
Streszczenie
- Służy
fuser -n tcp/udp [port]do znajdowania i kończenia procesów na porcie. - Użyj
lsof -i tcp:portdo identyfikacji, a następniekillprocesów. - Użyj,
netstat -p tcp -l -naby zobaczyć aktywne gniazda nasłuchujące i uzyskać PID-y. - Należy zachować ostrożność przy wymuszonym zabijaniu, zwłaszcza przy użyciu
-9; może to spowodować utratę danych lub niestabilność.
Podsumowanie
Na początku może się to wydawać dużo, ale gdy się przyzwyczaisz, zamykanie problematycznych procesów stanie się dla Ciebie czymś naturalnym. Pamiętaj tylko, aby dokładnie sprawdzać, co wyłączasz – nikt nie chce przypadkowo spowodować awarii kluczowej usługi systemowej. Mamy nadzieję, że pomoże to rozwiązać te uciążliwe konflikty portów i zapewni płynne działanie komputera z systemem Linux.
Powiązane artykuły
Czy ten artykuł był pomocny?