Czasami czynności administracyjne wymagają żeby znaleźć proces który używa konkretnego portu. Może być to spowodowane np. zawieszeniem usługi, której nie można wyłączyć za pomocą innych poleceń systemowych. Poniżej przedstawię szybki sposób jak to zrobić.
Znajdziemy proces który działa na porcie TCP/9392. Pamiętaj o tym żeby dostosować polecenia do swoich potrzeb, ponieważ porty czy nazwy procesów w Twoim systemie mogą być inne. W poprzednim artykule znajdziesz krótki opis tego czym są porty TCP i UDP w systemach operacyjnych i ogólnie ujęciu sieciowym.
Polecenie lsof
Za pomocą tego polecenia, między innymi da się też ustalić jaka usługa opowiada na wskazanym porcie.
Aby wylistować wszystkie porty które w Twoim systemie wykonaj takie polecenie, koniecznie z podwyższonymi uprawnieniami lub jak root:
sudo lsof -i
Możesz też wskazać konkretny port:
sudo lsof -i :9392
Polecenie netstat
Innym poleceniem pozwalającym na wyszukiwanie portów jest polecenie netstat.
sudo netstat -lntup| grep LISTEN
Teraz kilka informacji o parametrach z jakimi zostało uruchomione polecenie:
-l – pokazuje tylko porty nasłuchujące
-n – wskazuje adres IP oraz numer portu w formie numerycznej, nie zamienia danych na informacje z zdefiniowane w /etc/services/
-t – pokazuje otwarte porty TCP
-u – pokazuje otwarte porty UDP
-p – pokazuje ID procesu który nasłuchuje na danym porcie
Co dalej zrobić z tymi informacjami?
W zależności od sytuacji może być potrzeba wykonania kolejnych poleceń, w zależności od tego co potrzebujesz.
Polecenie ps pokaże więcej informacji o id procesu który nasłuchuje we wskazanym przykładzie z portem TCP/9392:
Polecenie kill pozwala na zamknięcie procesu – w zależności od wybranego parametru czekając na jego zakończenie lub kończąc je natychmiast:
kill -9 ID_PROCESU
Podsumowanie
W krótki sposób wskazałem jak znaleźć proces odpowiedzialny za uruchomienie danego portu.