Ich installiere Hadoop auf meinem Ubuntu-System. Wenn ich es starte, wird gemeldet, dass Port 9000 belegt ist.
Ich benutzte:
netstat -nlp|grep 9000
um zu sehen, ob ein solcher Port existiert und ich habe dies:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
Aber wie kann ich die PID des Prozesses erhalten, der es hält?
netstat
Der Befehl funktioniert möglicherweise in vielen Betriebssystemen, um dies zu ermöglichen. Sie müssen nur die Argumente finden, die sicherstellen, dass PIDs an jedem bekannten, geöffneten Port angezeigt werden.Antworten:
Unter Linux müssen Sie root oder der Eigentümer des Prozesses sein, um die gewünschten Informationen zu erhalten. Als solche für Prozesse als ein anderer Benutzer ausgeführt wird , Prepending
sudo
ist das meiste, was Sie brauchen. Darüber hinaus steht auf modernen Linux-Systemen dasss
folgende Tool zur Verfügung:Sie können auch denselben Aufruf verwenden, den Sie gerade verwenden. Beachten Sie jedoch Folgendes
sudo
:Sie können auch lsof verwenden:
quelle
-p
Option eher für das Protokoll als für den Prozess. Siehe diese FrageFinding the PID of the process using a specific port
sudo
oben setzt.lsof -ti tcp:80
Sie können auch das
lsof
Dienstprogramm verwenden. Muss root sein.quelle
established
Verbindungen, nicht nur Prozesse mit Verbindungenlistening
.lsof -i :25 -Fp
, die Ausgabe wie erzeugtp1234
.Ich verwende "CentOS 7 minimal", was
netstat
weder noch hatlsof
. Viele Linux-Distributionen haben jedoch den Befehl socket statistics (dhss
).Hier ist ein Beispiel für die Ausführung:
quelle
ss -pntl 'sport = :6379'
Wenn Sie den Befehl mit
sudo
ausführen, erhalten Sie diePID
. Auf meiner Entwicklungsmaschine bekomme ich:Und wie in anderen Antworten erwähnt, können Sie auch
ss
dielsof
Befehle oder verwenden .quelle
sudo
Anzeigeprozess-IDsudo netstat -nlp | grep 34157
immer noch-
anstelle von PID angezeigt wird?Auch können Sie verwenden
fuser
:Die Ausgabe :
quelle
sudo
dass der Prozess dessudo