如何在Ubuntu上杀死端口上的进程


488

我正在尝试在命令行中终止ubuntu中特定端口的进程。

如果运行此命令,我将获得端口:

sudo lsof -t -i:9001

所以...现在我要运行:

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

我收到此错误消息:

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.

我也尝试sudo kill 'lsof -t -i:9001'


9
仅供参考,Ubuntu问题更有可能在StackExchange
JScoobyCed 2012年

Answers:


900

您想使用反勾号而不是常规勾号:

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

如果那不起作用,您也可以使用$()命令插值:

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

43
您忘记添加信号选项。应阅读:sudo kill -9 $(sudo lsof -t -i:9001)
Francesco Gramano

7
@FrancescoGramano:除非必须,否则您不想使用-9。
zellio 2015年

2
sudo kill不能杀死进程,@ putra.koreng的方法效果很好
芳馨

3
如果上述方法不起作用,请尝试以下方法:stackoverflow.com/a/50515868/9339242
Arayan Singh,

1
这个操作系统是独立的还是Linux特定的?如果特定于Linux,那么此命令也有效os.system("fuser -k 8080/tcp");
Ridhuvarshan


78

FOR UBUNTU 1-查找使用pro的应用程序/进程,键入:

sudo netstat -lpn |grep :8080

然后按Enter。

您将获得与此类似的输出

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

2-我有进程ID,它是6782,现在这是使用端口8080的进程。

3-杀死进程,输入:杀死6782

kill 6782

3
简短而酥脆的回复
Vikas Kukreti,2015年

1
表现出色
Tyler Bell

您能写出您如何使用上述命令吗?
Mohit Singh,

1
在我的Ubuntu 18.04服务器上找不到具有更多支持的提升器中的命令时,效果很好。谢谢!
Salivan


35

有一些使用普通的netstat命令无法显示的过程,因此您必须使用以下命令进行检查 sudo

sudo netstat -lpn |grep :8080。系统正在运行的进程未显示PID,要获取此进程的PID,您将必须使用sudo

然后使用port杀死进程8080。您可能也需要sudo在这里使用。所以要杀死这个过程使用sudo kill -9 PID




15

您也可以使用定影器来执行此操作(默认情况下发送SIGKILL): sudo fuser -k 9001/tcp



12

终止在端口号上运行的进程9001

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).

有关更多信息,请访问我的博客


11

要首先终止基于端口的进程,我们必须找出给定端口的相关pid并使用该pid终止,

在我的情况下,我想获取3000端口的pid(进程ID):

netstat -ltnp | grep -w '3000'

然后找到正在监听TCP的PID

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

你会得到pid 29972

要杀死这个pid,请使用以下命令

kill -9 29972

基于端口的终止进程的伪代码

 netstat -ltnp | grep -w 'PORT'

kill -9 PID



5

使用命令

 netstat -plten |grep java

使用grep java作为tomcat使用java作为其进程。

它将显示带有端口号和进程ID的进程列表

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

/ java之前的数字是进程ID。现在使用kill命令杀死进程

kill -9 16085

-9表示该过程将被强制终止。


4

sudo热熔器-n tcp -k [端口号]

须藤lsof -t -i:[端口号]


3

使用它来杀死在端口号“ 9001”上运行的进程

 kill $(lsof -t -i:9001)

与其他示例一起使用,包括已接受的答案。
肯斯特(Kenster),

3

尝试这个:

lsof -i :port

or 

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

or

kill -9 <pid>

or 

sh killport 8000

我正在使用Ubuntu 17,kill -9 <pid>对我来说很棒!
protoEvangelion


1

它分为两个步骤:

  1. 知道端口号上的进程ID。8080(可以是任何一个)
  2. 杀死ID 8689的进程(可以不同)

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


1

显示活动的TCP连接,计算机正在侦听的端口。

netstat -tupln

它将列出您所有的pid连接。查找并复制pid并运行以下命令。确保在以下命令中将替换为实际ID。

kill -9 <copied pid>

-9用于强制终止连接。


1

例如,尝试sudo fuser PORT/tcp -kPORT您要终止的端口替换80


0

杀死-9 $(lsof -t -i:9001)

可以用来杀死进程。您可以使用任何端口号代替9001


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.