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?
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?
Antworten:
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
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.
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).
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.