Ich installiere Hadoop auf meinem Ubuntu-System. Wenn ich es starte, wird gemeldet, dass Port 9000 belegt ist.

Ich habe Folgendes verwendet:

netstat -nlp|grep 9000 

, um festzustellen, ob ein solcher Port vorhanden ist und Ich habe Folgendes erhalten:

 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 

Aber wie kann ich die PID des Prozesses ermitteln, der sie enthält?

Kommentare

Antwort

Unter Linux müssen Sie root oder der Eigentümer des Prozesses sein, um die gewünschten Informationen zu erhalten. Daher ist für Prozesse, die als ein anderer Benutzer ausgeführt werden, das Voranstellen von sudo das meiste, was Sie benötigen. Darüber hinaus ist auf modernen Linux-Systemen ss das Werkzeug, um dies zu tun:

$ sudo ss -lptn "sport = :80" State Local Address:Port Peer Address:Port LISTEN 127.0.0.1:80 *:* users:(("nginx",pid=125004,fd=12)) LISTEN ::1:80 :::* users:(("nginx",pid=125004,fd=11)) 

Sie Sie können auch denselben Aufruf verwenden, den Sie gerade verwenden, aber denken Sie daran, sudo:

$ sudo netstat -nlp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx 

Sie können dies auch Verwenden Sie lsof:

$ sudo lsof -n -i :80 | grep LISTEN nginx 125004 nginx 3u IPv4 6645 0t0 TCP 0.0.0.0:80 (LISTEN) 

Kommentare

  • Hinweis: Unter OSX ist die bezieht sich eher auf das Protokoll als auf den Prozess. Siehe diese Frage
  • @BryanP Das OP hat nach Ubuntu gefragt, damit ' ist irgendwie irrelevant …
  • @AdamB Es sei denn, ein Mac-Benutzer ist hier angekommen und hat nach Finding the PID of the process using a specific port
  • gesucht

  • Diese Antwort würde wahrscheinlich verbessert, wenn sudo oben angezeigt wird.
  • @MrOnyancha Verwenden Sie die knappen (-t) Optionen – lsof -ti tcp:80

Antwort

Sie können auch util ity. Muss root sein.

# lsof -i :25 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME exim4 2799 Debian-exim 3u IPv4 6645 0t0 TCP localhost:smtp (LISTEN) exim4 2799 Debian-exim 4u IPv6 6646 0t0 TCP localhost:smtp (LISTEN) 

Kommentare

  • Mit diesem Befehl erhalten Sie auch Prozesse mit established Verbindungen, nicht nur Prozesse, die listening sind.
  • Nicht unbedingt root sein. Und für diejenigen, die nur PID erhalten möchten, können Sie lsof -i :25 -Fp verwenden, wodurch eine Ausgabe wie p1234 erzeugt wird.

Antwort

Ich verwende „CentOS 7 minimal“, das weder netstat noch lsof. Viele Linux-Distributionen haben jedoch den Befehl socket statistics (dh ss).

Hier ist ein Beispiel für die Ausführung:

# ss -tanp | grep 6379 LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4)) 

Kommentare

  • Siehe auch ss -pntl 'sport = :6379'

Antwort

Sie können auch fuser verwenden:

fuser -v -n tcp 22 

Die Ausgabe:

 USER PID ACCESS COMMAND 22/tcp: root 598 F.... sshd 

Kommentare

  • Es gibt keine ' funktioniert nicht Fixiereinheit -v -n tcp 80 , auch ich versuche es mit sudo
  • Hinweis: Dies erfordert sudo wenn der fehlerhafte Prozess auch mit sudo
  • gestartet wurde. Dies ist eine gute Sache, an die Sie sich im Allgemeinen erinnern sollten. Befehle unter Linux geben im Allgemeinen ' keine Informationen zu Prozessen, die von root / sudo gestartet wurden, es sei denn, der Befehl wird mit Sudo ausgeführt. Dies gilt auch dann, wenn der Befehl normalerweise kein sudo benötigt, um korrekt ausgeführt zu werden.

Antwort

Ausführen des Befehls mit sudo erhalten Sie die PID. Auf meinem Entwicklungscomputer wird Folgendes angezeigt:

$ netstat -nlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN - $ sudo netstat -nlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 16449/java 

Wie in anderen Antworten erwähnt, können Sie auch ss oder verwenden die Befehle lsof.

Kommentare

  • Befehl als sudo Prozess-ID anzeigen
  • Aber was ist, wenn sudo netstat -nlp | grep 34157 weiterhin - anstelle von PID anzeigt?

Antwort

Ich arbeite an einem Yocto Linux-System mit einer begrenzten Anzahl verfügbarer Linux-Tools. Ich habe es geschafft, es zu finden Der Prozess eines laufenden Ports mit den folgenden Befehlen (wobei ich den Prozess mit Port 1883 finde):

 root@root:~# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN tcp 0 0 localhost.localdomain:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN tcp 0 0 :::hostmon :::* LISTEN tcp 0 0 localhost:domain :::* LISTEN tcp 0 0 :::ssh :::* LISTEN tcp 0 0 :::1883 :::* LISTEN root@root:~# fuser 1883/tcp 290 root@root:~# ps | grep 290 290 mosquitt 25508 S /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf 12141 root 8444 S grep 290  

Wie wir oben sehen können, verwendet das Programm /usr/sbin/mosquitto Port 1883.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.