Wie finde (und beende) ich einen Prozess, der an einem bestimmten Port ausgeführt wird? [Duplikat]

30

Mögliches Duplikat:
Ermitteln des Prozesses, der unter Linux einen bestimmten Port verwendet

Ich benutze Ubuntu Linux 11.04. Wie schreibe ich einen Shell-Skriptausdruck, der den auf Port 4444 ausgeführten Prozess findet und dann den Prozess beendet?

Gemeinschaft
quelle
Ich glaube nicht, dass dies ein Duplikat ist, da es fragt, wie der Prozess am Port getötet, nicht gefunden werden soll: fuser -k 9000 / tcp
Kris

Antworten:

47

Sie könnten verwenden lsof, um den Prozess zu finden:

lsof -t -i:4444

würde nur die pid des Prozesses auflisten, der auf Port 4444 lauscht. Man könnte einfach sagen

kill `lsof -t -i:4444`

wenn du mutig wärst

Ernest Friedman-Hill
quelle
14
+1 für 'wenn du mutig wärst.'
Mr. Shickadance
7

Sie verwenden lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

Die Ausgabe wird ungefähr so ​​aussehen:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Dabei ist die erste Spalte der Prozessname und die zweite Spalte die Prozess-ID. Anschließend analysieren Sie die Ausgabe, ermitteln die Prozess-ID (PID) und beenden sie mit dem killBefehl.

Pablo Santa Cruz
quelle
1
Ich hatte noch nie von so etwas gehört. Ein Blick auf die Manpage scheint unglaublich nützlich zu sein. Vielen Dank!
alles in linux ist eine datei und mit lsof findet man
dateien
2

Alternativ können Sie verwenden, netstat -apwenn lsofes auf Ihrem System nicht verfügbar ist (da es sich nicht um ein System handelt, mit dem ich regelmäßig arbeite).

DaveRandom
quelle
Guter Anruf, ich habe mich gefragt, warum dies bei einem Docker-Image, an dem ich gearbeitet habe, nicht funktioniert hat
jcollum
2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

Verwendet netstat, um empfangsbereite INET-Sockets mit numerischen Ports und übergeordneten Prozessen aufzulisten. Filtert nach String 4444, entnimmt die 7. Spalte (PID / Prozessname) und teilt sie weiter durch "/", um die PID zu erhalten. Übergibt den Befehl zum Töten.

Arek B.
quelle
2
Ich würde gegen die Tötung -9 empfehlen. Bereinigung ist nicht möglich, und in einigen Internet-Apps sind Ressourcen häufiger vorhanden, die ordnungsgemäß heruntergefahren werden müssen.
Rich Homolka