Instaluję hadoop w moim systemie Ubuntu. Kiedy go uruchamiam, zgłasza, że port 9000 jest zajęty.
Użyłem:
netstat -nlp|grep 9000
aby sprawdzić, czy taki port istnieje i otrzymałem to:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
Ale jak mogę uzyskać PID procesu, który go przetrzymuje?
netstat
polecenie może działać w wielu systemach operacyjnych, aby to umożliwić, wystarczy znaleźć argumenty, które zapewnią wyświetlanie pid wzdłuż każdego znanego otwartego portu.Odpowiedzi:
W systemie Linux użytkownik musi być rootem lub właścicielem procesu, aby uzyskać pożądane informacje. Jako takie, w procesach działających jako inny użytkownik, przygotowywanie
sudo
jest najbardziej potrzebne. Ponadto, w nowoczesnych systemach Linux,ss
jest narzędzie do tego celu:Możesz także użyć tego samego wywołania, którego obecnie używasz, ale pamiętaj, aby
sudo
:Możesz także użyć lsof:
źródło
-p
opcja dotyczy protokołu, a nie procesu. Zobacz to pytanieFinding the PID of the process using a specific port
sudo
na szczycie.lsof -ti tcp:80
Możesz także użyć
lsof
narzędzia. Musisz być rootem.źródło
established
połączeniami, a nie tylko same procesylistening
.lsof -i :25 -Fp
, co daje wynik podobny dop1234
.Używam „CentOS 7 minimalny”, który ma ani
netstat
anilsof
. Ale wiele dystrybucji Linuksa ma polecenie statystyki gniazd (tjss
.).Oto przykład wykonania:
źródło
ss -pntl 'sport = :6379'
Wykonanie polecenia za pomocą
sudo
dałoby ciPID
. Na mojej maszynie programistycznej otrzymuję:Jak wspomniano w innych odpowiedziach, możesz także użyć poleceń
ss
lublsof
.źródło
sudo
identyfikator procesu wyświetlaniasudo netstat -nlp | grep 34157
nadal wyświetla się-
zamiast PID?Możesz także użyć
fuser
:Wyjście :
źródło
sudo
jeśli proces przestępstwa również został rozpoczętysudo