如何在Ubuntu上终止一个端口上的进程

873
我是一名有用的助手,可以进行文本翻译。以下是需要翻译的内容:

我正在尝试在Ubuntu的命令行中杀死一个特定端口的进程。

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

sudo lsof -t -i:9001

so...now I want to run:

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'

12
FYI,Ubuntu相关问题在StackExchange(StackOverflow)网络的Ubuntu专区:http://askubuntu.com上被回答的机率更高。 - JScoobyCed
老实说,你应该使用fuser,因为它非常简单,但无论如何。 - CrazyVideoGamer
仅供个人使用 sudo kill -9 $(sudo lsof -t -i:3000) - Sasha Kos
30个回答

12

使用这个:

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

这在我的Ubuntu 20.04上有效。这是最好的,因为它将两个步骤合并为一个命令。 - joe-khoa

11

只需在终端中输入以下命令即可:

kill -9 $(lsof -t -i:3000)

11

让我们考虑一下,如果您想关闭3000端口。

步骤1:运行此命令,将获得其PID。

sudo lsof -t -i:3000

这将返回PID为291141

步骤2:运行此命令使用PID杀死端口。

sudo kill -9 291141

砰!端口被杀死了


6
可以在终端中使用以下命令:fuser -k 3000/tcp

5

杀死端口:

sudo 命令可用于显示进程 ID。

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

$ kill -9 45136

5

如果我是你,我会使用

fuser -k -n tcp PORT
kill -9 PID

5

使用该命令

 netstat -plten |grep java

Tomcat使用Java作为其进程,因此我们可以使用grep java来查询相关进程。

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

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

/java 前面的数字是进程 ID。现在使用 kill 命令来终止该进程。
kill -9 16085

-9表示进程将被强制杀死。


5

只需在你的.bashrc / .zshrc中添加一个别名:

  1. 打开新终端
  2. nano .bashrc
  3. 向下滚动并添加一个别名: alias kp='kill_process_by_port() { sudo kill -9 $(sudo lsof -t -i:"$1"); }; kill_process_by_port "$@"'
  4. 按下ctrl + x + y
  5. source .bashrc
  6. kp 9000

lsof: -i中不可接受的端口规范 lsof 4.93.2 最新版本:https://github.com/lsof-org/lsof 最新FAQ:https://github.com/lsof-org/lsof/blob/master/00FAQ 最新(非格式化)手册页:https://github.com/lsof-org/lsof/blob/master/Lsof.8 用法:[-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-E] [+|-e s] [+|-f[gG]] [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s] [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names] 使用“-h”选项获取更多帮助信息。 kill: (8000):没有这个进程 - texas697
固定的:alias kp='kill_process_by_port() { sudo kill -9 $(sudo lsof -t -i:"$1"); }; kill_process_by_port "$@"' - knaitas

4
试试这个:
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

3

我遇到了错误OSError: [Errno 98] Address already in use。使用以下方法解决了我的Ubuntu系统中的错误。(版本="18.04.4 LTS(Bionic Beaver)"

$ sudo netstat -lpn |grep :5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      25959/uwsgi   

$ fuser -k -n tcp 5000
5000/tcp:            25959
 

希望能对某些人有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接