如何杀死在 Linux 中的特定端口上运行的进程?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11583562/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to kill a process running on particular port in Linux?
提问by veer7
I tried to close the tomcat using ./shutdown.sh
from tomcat /bin
directory. But found that the server was not closed properly. And thus I was unable to restart
My tomcat is running on port 8080
.
我尝试使用./shutdown.sh
from tomcat/bin
目录关闭tomcat 。但是发现服务器没有正常关闭。因此我无法重新启动
我的 tomcat 正在端口上运行8080
。
I want to kill the tomcat process running on 8080
. I first want to have the list of processes running on a specific port (8080) in order to select which process to kill.
我想杀死正在运行的 tomcat 进程8080
。我首先想要在特定端口 (8080) 上运行的进程列表,以便选择要杀死的进程。
采纳答案by veer7
Use the command
使用命令
sudo netstat -plten |grep java
used grep java
as tomcat
uses java
as their processes.
使用grep java
作为tomcat
用途java
作为他们的流程。
It will show the list of processes with port number and process id
它将显示带有端口号和进程 ID 的进程列表
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
the number before /java
is a process id. Now use kill
command to kill the process
前面的数字/java
是进程 ID。现在使用kill
命令杀死进程
kill -9 16085
-9
implies the process will be killed forcefully.
-9
意味着该进程将被强行杀死。
回答by nudzo
This fuser 8080/tcp
will print you PID of process bound on that port.
这fuser 8080/tcp
将打印绑定在该端口上的进程的 PID。
And this fuser -k 8080/tcp
will kill that process.
这fuser -k 8080/tcp
将终止该过程。
Works on Linux only. More universal is use of lsof -i4
(or 6 for IPv6).
仅适用于 Linux。更普遍的是使用lsof -i4
(或 6 用于 IPv6)。
回答by Brian Peterson
This prints to stdout the process ids of everything running on <port_number>
:
这将打印到 stdout 上运行的所有进程的进程 ID <port_number>
:
fuser -n tcp <port_number>
It also prints some stuff to stderr, so:
它还会向 stderr 打印一些内容,因此:
fuser -n tcp <port_number> 2> /dev/null
We can then supply these process ids to the kill
command:
然后我们可以将这些进程 ID 提供给kill
命令:
sudo kill $(fuser -n tcp <port_number> 2> /dev/null)
You could also put this in a function if you do it a lot:
如果你经常这样做,你也可以把它放在一个函数中:
function killport() {
sudo kill $(fuser -n tcp 2> /dev/null)
}
回答by ben rhouma moez
Linux: You can use this command if you know the port :
Linux:如果您知道端口,则可以使用此命令:
netstat -plten | grep LISTEN | grep 8080
AIX:
艾克斯:
netstat -Aan | grep LISTEN | grep 8080
You then take the first column (example: f100050000b05bb8) and run the following command:
然后获取第一列(例如:f100050000b05bb8)并运行以下命令:
rmsock f100050000b05bb8 tcpcb
kill process.
杀死进程。
回答by Sanjay s.
To know the pid of service running on particular port :
要知道在特定端口上运行的服务的 pid:
netstat -tulnap | grep :*port_num*
you will get the description of that process. Now use kill or kill -9 pid. Easily killed.
您将获得该过程的描述。现在使用 kill 或 kill -9 pid。轻松杀死。
e.g
例如
netstat -ap | grep :8080
netstat -ap | grep :8080
tcp6 0 0 :::8080 :::* LISTEN 1880/java
Now:
现在:
kill -9 1880
Remember to run all commands as root
请记住将所有命令作为 root
回答by Kop4lyf
You can use the lsof command. Let port number like here is 8090
您可以使用 lsof 命令。让这里的端口号是 8090
lsof -i:8090
This command returns a list of open processes on this port.
此命令返回此端口上打开的进程列表。
Something like…
就像是…
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)
To free the port, kill the process using it(the process id is 75782)…
要释放端口,请使用它杀死进程(进程 ID 为 75782)...
kill -9 75782
This one worked for me. here is the link from the original post: link
回答by Adil Abbasi
try like this,
试试这样
sudo fuser -n tcp -k 8080
回答by Franck Dernoncourt
To list any process listening to the port 8080:
列出任何侦听端口 8080 的进程:
lsof -i:8080
To kill any process listening to the port 8080:
杀死任何监听端口 8080 的进程:
kill $(lsof -t -i:8080)
or more violently:
或更猛烈地:
kill -9 $(lsof -t -i:8080)
(-9
corresponds to the SIGKILL - terminate immediately/hard kill
signal: see List of Kill Signalsand What is the purpose of the -9 option in the kill command?. If no signal is specified to kill
, the TERM signal a.k.a. -15
or soft kill
is sent, which sometimes isn't enough to kill a process.).
(-9
对应于SIGKILL - terminate immediately/hard kill
信号:请参阅杀死信号列表和kill 命令中 -9 选项的用途是什么?。如果没有指定信号kill
,则 TERM 信号又名-15
或soft kill
发送,有时不足以杀死一个过程。)。
回答by Nandhitha Ramaraj
lsof -i tcp:8000
This command lists the information about process running in port 8000kill -9 [PID]
This command kills the process
lsof -i tcp:8000
该命令列出运行在 8000 端口的进程信息kill -9 [PID]
此命令终止进程
回答by Chaklader
In Windows, it will be netstat -ano | grep "8080"
and we get the following message TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076
在 Windows 中,它将是netstat -ano | grep "8080"
,我们收到以下消息TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076
WE can kill the PID using taskkill /F /PID 10076
我们可以使用杀死PID taskkill /F /PID 10076