ChatGPT解决这个技术问题 Extra ChatGPT

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

我试图在命令行中为 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'

仅供参考,Ubuntu 问题更有可能在 StackExchange (StackOverflow) 网络的 Ubuntu 部分得到解答:askubuntu.com
老实说,您应该使用 fuser,因为它非常简单,但无论如何。

a
armanexplorer

您想使用反引号,而不是常规刻度:

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

如果这不起作用,您还可以使用 $() 进行命令插值:

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

您忘记添加信号选项。应为:sudo kill -9 $(sudo lsof -t -i:9001)
@FrancescoGramano:除非必须,否则您不想使用 -9。
sudo kill 无法终止进程时,@putra.koreng 的方法效果很好
如果上述方法不起作用,请尝试以下操作:stackoverflow.com/a/50515868/9339242
这个操作系统是独立的还是特定于 Linux 的?如果特定于 Linux,那么即使此命令也有效 os.system("fuser -k 8080/tcp");
f
fjsj

您可以使用

fuser -n tcp -k 9001 

see more details in wikipedia


如果不是root:sudo fuser -n tcp -k 9001
Tnx 它对我有用。
L
Lemon Kazi

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

sudo netstat -lpn |grep :8080

并按 Enter。

您将获得与此类似的输出

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

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

3-终止进程,键入:kill -p 6782

kill -9 6782

这对我不起作用。甚至我尝试在 Ubuntu 20.04 上使用 sudo 终止进程
@MuhammadTariq 尝试使用 kill -9 {PID}
第 3 步:回复:kill -p 6782 by:kill -9 6782 -> 它对我有用
我使用了 sudo 并且它有效
@MuhammadTariq 那么您在该端口上没有正在运行的进程。
C
Cody Gray

在 Ubuntu 终端中终止端口的最佳方法是使用 fuser 命令;例如:

fuser -k 9001/tcp

这会默认发送 SIGKILL


U
User16119012

有些进程使用普通的 netstat 命令没有显示,所以您必须使用 sudo 检查它。

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

然后使用端口 8080 杀死进程。您可能还必须在此处使用 sudo。所以要杀死这个进程使用 sudo kill -9 PID


A
Arayan Singh

终止在端口号 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).

如需更多信息,您可以访问我的blog


A
Abdennour TOUMI

使用 killport 命令:

sh killport 9001 

要下载 shell,您可以使用 wget

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

如果它不起作用,则表示目标端口已关闭
김태은

要首先根据端口终止进程,我们必须找出给定端口的相关 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

基于端口的kill进程伪代码

 netstat -ltnp | grep -w 'PORT'

kill -9 PID

P
Pang

用这个:

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

这在 ubuntu 20.04 上对我有用,这是最好的,因为它将 2 个步骤合并为一个命令。
P
PHP Hupp Technologies

sudo kill -9 $(sudo lsof -t -i:9001) 为我工作,或者您可以使用

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

将 9001 替换为您想要的端口号。


N
Nishant Kumar

只需在终端输入以下命令

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

L
Lnux

杀死端口:

sudo 对显示进程 ID 很重要。

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

$ kill -9 45136

k
kumbhani bhavesh

使用命令

 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 表示进程将被强制终止。


L
Loveli

如果我是你,我会用

fuser -k -n tcp PORT
kill -9 PID

R
Ranvijay Sachan

尝试这个:

lsof -i :port

or 

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

or

kill -9 <pid>

or 

sh killport 8000

我在 Ubuntu 17 上,kill -9 <pid> 非常适合我!
R
Ransaka Ravihara

它给了我一个错误OSError: [Errno 98] Address already in use。使用以下方法解决了我在 Ubuntu 中的错误。(VERSION="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
 

希望它会帮助别人!


d
davidblumer
sudo kill `sudo lsof -t -i:9001`

您不必添加-9信号选项


T
TT.

xargs 可能是一个非常有用的命令。

您可以像这样管道命令

lsof -t -i :9001 | xargs sudo kill

它的作用:它获取第一个命令的输出,在本例中是在端口上运行的进程,并将其传递给 sudo kill


s
shekhar677

获取在端口 3000 上运行的进程的 PID:lsof -i tcp:3000

杀死进程 kill -9 process_id

示例:
lsof -i tcp:3000
(输出中的 PID = 5805)
kill -9 5805

如果需要,使用 sudo


N
Naveen Kumar

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


R
Ratnesh Kushwaha

它的两个步骤过程:

知道端口号上的进程 ID。 8080(可以是任何)杀死该ID的进程 8689(可以不同) fuser -n tcp 8080 #o/p 8080/tcp 8689 kill -9 8689


A
Adeojo Emmanuel IMM

你可以使用 node 来解决这个问题

npm install freethenport -g

然后

node freethenport 9001

L
Lalit Mohan

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

netstat -tupln

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

kill -9 <copied pid>

-9 用于强行终止连接。


F
Francisco Cardoso

使用较新版本的 Ubuntu 时,您将不再使用 netcat,而是使用 ss

ss -lptpn | grep 9001   
sudo kill <replace-with-process-id>

S
Salma Aboumzrag

sudo netstat -lpn |grep :8080

而不是得到这个进程的PID

杀死 -9


A
Avi

您也可以使用 xargs。只需运行以下命令,

sudo lsof -t -i:443 | xargs 须藤杀 -9


正如目前所写的那样,您的答案尚不清楚。请edit添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以找到有关如何写出好答案的更多信息in the help center