So beenden Sie einen Prozess an einem Port auf Ubuntu


488

Ich versuche, einen Prozess in der Befehlszeile für einen bestimmten Port in Ubuntu abzubrechen.

Wenn ich diesen Befehl ausführe, erhalte ich den Port:

sudo lsof -t -i:9001

also ... jetzt möchte ich rennen:

sudo kill 'sudo lsof -t -i:9001'

Ich erhalte diese Fehlermeldung:

ERROR: garbage process ID "lsof -t -i:9001".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

Ich habe versucht , sudo kill 'lsof -t -i:9001'so gut


Antworten:


900

Sie möchten Backtick nicht reguläres Tick verwenden:

sudo kill -9 `sudo lsof -t -i:9001`

Wenn das nicht funktioniert, können Sie auch die $()Befehlsinterpolation verwenden:

sudo kill -9 $(sudo lsof -t -i:9001)

43
Sie haben vergessen, die Signaloption hinzuzufügen. Sollte lauten:sudo kill -9 $(sudo lsof -t -i:9001)
Francesco Gramano

7
@FrancescoGramano: Sie möchten -9 nicht verwenden, es sei denn, Sie müssen.
Zellio

2
Wenn sudo killder Prozess nicht abgebrochen werden kann, funktioniert die Methode von @ putra.koreng gut
Fangxin

3
Wenn oben nicht funktioniert, versuchen Sie dies: stackoverflow.com/a/50515868/9339242
Arayan Singh

1
Ist dieses Betriebssystem unabhängig oder Linux-spezifisch? Wenn Linux spezifisch ist, funktioniert sogar dieser Befehlos.system("fuser -k 8080/tcp");
Ridhuvarshan


78

FÜR UBUNTU 1- Finden Sie heraus, welche Anwendung / welcher Prozess den Pro verwendet, geben Sie Folgendes ein:

sudo netstat -lpn |grep :8080

und drücken Sie die Eingabetaste.

Sie erhalten eine ähnliche Ausgabe wie diese

tcp6       0      0 :::8080                 :::*                    LISTEN      6782/java

2- Ich habe die Prozess-ID 6782, jetzt ist dies der Prozess, der Port 8080 verwendet.

3- Beenden Sie den Prozess, geben Sie Folgendes ein: kill 6782

kill 6782

3
Kurze und
knackige

1
Funktionierte perfekt
Tyler Bell

Könnten Sie bitte aufschreiben, wie Sie den obigen Befehl verwenden?
Mohit Singh

1
Hat einfach super funktioniert, während Befehle in Antworten mit mehr Upvotes auf meinem Ubuntu 18.04-Server nicht gefunden wurden. Vielen Dank!
Salivan


35

Es gibt einige Prozesse, die mit dem normalen Befehl netstat nicht angezeigt werden. Sie müssen ihn daher mit überprüfen sudo .

Tu es sudo netstat -lpn |grep :8080. Der vom System ausgeführte Prozess zeigt keine PID an. Um die PID dieses Prozesses zu erhalten, müssen Sie ihn mit ausführensudo

Und dann den Prozess mit Port beenden 8080. Möglicherweise müssen Sie auch sudohier verwenden. Um diesen Prozess zu beenden, verwenden Siesudo kill -9 PID


19

Verwenden Sie den Befehl killport :

sh killport 9001 

Zum Herunterladen der Shell können Sie Folgendes verwenden wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport

1
Wenn es nicht funktioniert, bedeutet dies, dass der Zielport bereits geschlossen ist
Abdennour TOUMI

17

Geben Sie den folgenden Befehl im Terminal ein, um den Portdienst in Ubuntu zu beenden

Im Terminal:

sudo fuser -k port/tcp
sudo fuser -k 8001/tcp

Dieser einfache macht es großartig.
Tri

15

Sie können dazu auch die Fixiereinheit verwenden (sendet standardmäßig SIGKILL): sudo fuser -k 9001/tcp


15

einfach eintreten

    fuser -k -n tcp 3000

im Terminal, wobei 3000 Ihre Portnummer ist


1
Verwenden der Fixiereinheit: Zeigen Sie an, welche Prozesse die genannten Dateien, Sockets oder Dateisysteme verwenden. -k: Steht für einen Kill. -n: Netstat tcp: Dies
Kaushik shrimali

12

So beenden Sie einen Prozess , der auf der Portnummer ausgeführt wird9001

sudo kill -9 $(sudo lsof -t -i:9001)


lsof   - list of files(Also used for to list related processes)

-t     - show only process ID

-i     - show only internet connections related process

:9001  - show only processes in this port number

kill   - command to kill the process

-9     - forcefully

sudo   - command to ask admin privilege(user id and password).

Für mehr kannst du meinen Blog besuchen


11

Um den Prozess basierend auf dem Port zu beenden, müssen wir zuerst die relevante PID für einen bestimmten Port herausfinden und mit dieser PID töten.

In meinem Fall wollte ich die PID (Prozess-ID) von 3000 Port erhalten:

netstat -ltnp | grep -w '3000'

dann finde pid, das tcp hört

tcp6       0      0 :::3000                 :::*                    LISTEN      29972/node  

Sie erhalten PID 29972

Um diese PID zu beenden, verwenden Sie den folgenden Befehl

kill -9 29972

Pseudocode für den Kill-Prozess basierend auf dem Port

 netstat -ltnp | grep -w 'PORT'

und

kill -9 PID


5

TÖTE PORT:

sudo ist wichtig, um die Prozess-ID anzuzeigen.

$ sudo netstat -antlp | grep 45136
tcp      0      0 0.0.0.0:45136         0.0.0.0:*        LISTEN           **-** 

$ kill -9 45136

5

Verwenden Sie den Befehl

 netstat -plten |grep java

verwendet grep java als tomcat verwendet java als ihre prozesse.

Es wird die Liste der Prozesse mit Portnummer und Prozess-ID angezeigt

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/java

Die Zahl vor / java ist eine Prozess-ID. Verwenden Sie jetzt den Befehl kill, um den Prozess abzubrechen

kill -9 16085

-9 bedeutet, dass der Prozess gewaltsam beendet wird.


4

sudo fuser -n tcp -k [portnummer]

sudo lsof -t -i: [portnummer]


3

Verwenden Sie dies zum Beenden des Prozesses, der auf der Portnummer "9001" ausgeführt wird.

 kill $(lsof -t -i:9001)

Redundant mit anderen Beispielen, einschließlich der akzeptierten Antwort.
Kenster

3

Versuche dies:

lsof -i :port

or 

sudo kill $(sudo lsof -t -i:8000)

or

kill -9 <pid>

or 

sh killport 8000

Ich bin auf Ubuntu 17 und habe kill -9 <pid>großartig für mich gearbeitet!
ProtoEvangelion

1
sudo kill `sudo lsof -t -i:9001`

Sie müssen nicht die Add - -9Signal - Option


1

Seine zwei Schritte Prozess:

  1. Prozess-ID an Port-Nr. 8080 (kann beliebig sein)
  2. Kill-Prozess dieser ID 8689 (kann unterschiedlich sein)

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    


1

Zeigt aktive TCP-Verbindungen an, Ports, an denen der Computer empfangsbereit ist.

netstat -tupln

Es werden alle Verbindungen entlang der PID aufgelistet. Suchen und kopieren Sie die PID und führen Sie den folgenden Befehl aus. Stellen Sie sicher, dass Sie die im folgenden Befehl durch die tatsächliche ID ersetzen.

kill -9 <copied pid>

-9 verwenden, um die Verbindung gewaltsam zu beenden.


1

Versuchen sudo fuser PORT/tcp -k Sie beispielsweise, PORTdurch den Port zu ersetzen, den Sie beenden möchten80


0

töte -9 $ (lsof -t -i: 9001)

kann verwendet werden, um den Prozess zu beenden. Sie können anstelle von 9001 eine beliebige Portnummer verwenden


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.