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

Tampa
quelle
9
Zu Ihrer
Information

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)
zellio
quelle
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
Mohit Singh
quelle
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
38

Der beste Weg, um einen Port im Ubuntu-Terminal zu töten, ist fuser -k 9001/tcp

Vishnu S Babu
quelle
3
Arbeitete einwandfrei für mich
Treffen Sie Zaveri
Es hat auch bei mir funktioniert. Dies sollte die akzeptierte Antwort sein.
CodeSlave
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

User16119012
quelle
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
Abdennour TOUMI
quelle
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
Abhishek-Saini
quelle
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

Dmitriusan
quelle
15

einfach eintreten

    fuser -k -n tcp 3000

im Terminal, wobei 3000 Ihre Portnummer ist

Sai Kumar
quelle
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

Arayan Singh
quelle
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
Prakash Nagaraj
quelle
8

Benutze das:

sudo kill -9 $(lsof -t -i:9001)
delpha
quelle
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
Guna Sekaran
quelle
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.

Kumbhanibhavesh
quelle
4

sudo fuser -n tcp -k [portnummer]

sudo lsof -t -i: [portnummer]

Javad
quelle
3

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

 kill $(lsof -t -i:9001)
arvind
quelle
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
Ranvijay Sachan
quelle
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

Davidblumer
quelle
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
    
Ratnesh Kushwaha
quelle
1

Sie können dies mit Knoten arbeiten

npm install freethenport -g

dann

node freethenport 9001
Adeojo Emmanuel IMM
quelle
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.

Lalit Mohan
quelle
1

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

Armin
quelle
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

Charuka Herath
quelle
-1

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

Albert Davies
quelle