1111

我尝试使用./shutdown.shfrom tomcat/bin目录关闭 tomcat。但是发现服务器没有正常关闭。因此我无法重新启动
我的 tomcat 正在端口上运行8080

我想杀死运行在8080. 我首先想要在特定端口(8080)上运行的进程列表,以便选择要杀死的进程。

4

31 回答 31

1336

fuser 8080/tcp将打印您绑定在该端口上的进程的 PID。

fuser -k 8080/tcp将终止该过程。

仅适用于 Linux。更普遍的是使用lsof -i4(或 6 用于 IPv6)。

于 2012-07-21T21:57:17.147 回答
1010

要列出侦听端口 8080 的任何进程:

lsof -i:8080

要杀死监听端口 8080 的任何进程:

kill $(lsof -t -i:8080)

或更猛烈地:

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

(-9对应于SIGKILL - terminate immediately/hard kill信号:请参阅终止信号列表kill 命令中 -9 选项的目的是什么?。如果没有指定信号到kill,则发送 TERM 信号,也-15就是soft kill发送,有时不足以杀死一个过程。)。

于 2015-09-15T18:17:37.850 回答
338

使用命令

 sudo netstat -plten |grep java

用作它们的过程grep javatomcat用途。java

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

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

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

kill -9 16085

-9意味着该进程将被强制终止。

于 2012-07-20T16:39:17.320 回答
244

选项 1单线只杀死特定端口上的 LISTEN:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)`

选项 2如果您安装了 npm,您也可以运行

npx kill-port 3000
于 2017-01-22T13:44:48.730 回答
172

一个班轮

kill -9 $(lsof -t -i tcp:8080)

此处的说明:使用lsof和的组合kill

root@localhost:~# lsof -i tcp:8080
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    23672 sine  238u  IPv6 3028222      0t0  TCP localhost:http-alt (LISTEN)

选择pid并使用kill

kill 23672
于 2019-11-26T16:30:30.867 回答
131

您可以使用 lsof 命令。让这里的端口号是 8090

lsof -i:8090

此命令返回此端口上打开的进程列表。

像……</p>

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

要释放端口,请杀死使用它的进程(进程 ID 为 75782)...</p>

kill -9 75782

这个对我有用。这是原始帖子的链接:link

于 2015-02-11T10:29:40.243 回答
89

如果要杀死在端口号 8080 上运行的进程,则首先需要找到 8080 端口的进程标识号(PID),然后将其杀死。运行以下命令查找 8080 端口号 PID:

sudo lsof -t -i:8080

这里,

  • sudo - 询问管理员权限(用户 ID 和密码)的命令。
  • lsof - 文件列表(也用于列出相关进程)
  • -t - 仅显示进程 ID
  • -i - 仅显示与 Internet 连接相关的进程
  • :8080 - 仅显示此端口号中的进程

因此,您现在可以使用以下命令轻松杀死您的 PID:

sudo kill -9 <PID>

这里,

  • kill - 杀死进程的命令
  • -9 - 强行

您可以使用以下命令使用一个命令来终止特定端口上的进程:

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

有关更多信息,您可以查看以下链接 How to kill a process on a specific port on linux

于 2018-05-18T12:29:52.617 回答
76

杀死特定端口上所有进程的最佳方法;

kill -9 $(sudo lsof -t -i:8080)
于 2019-12-04T12:57:37.027 回答
46

这会将运行的所有内容的进程 ID 打印到标准输出<port_number>

fuser -n tcp <port_number> 

它还会将一些内容打印到 stderr,因此:

fuser -n tcp <port_number> 2> /dev/null

然后我们可以将这些进程 ID 提供给kill命令:

sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

如果你经常这样做,你也可以把它放在一个函数中:

function killport() {
    sudo kill $(fuser -n tcp $1 2> /dev/null)
}
于 2013-09-27T21:10:52.897 回答
41

要知道在特定端口上运行的服务的 pid:

netstat -tulnap | grep :*port_num*

您将获得该过程的描述。现在使用 kill 或 kill -9 pid。很容易被杀死。

例如

netstat -ap | grep :8080

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

现在:

kill -9 1880

请记住将所有命令运行为root

于 2014-08-12T08:59:57.020 回答
38

获取任务的PID并杀死它。

lsof -ti:8080 | xargs kill
于 2018-11-29T04:37:59.113 回答
34

首先你需要做的是运行(替换为你的端口号):

fuser -k 3000/tcp

这将释放端口。运行上述命令后运行:

service docker restart

你的问题就解决了。

于 2020-07-21T10:02:38.603 回答
26

试试这样

 sudo fuser -n tcp -k 8080
于 2015-06-26T11:15:46.263 回答
19

选择端口号并在netstat命令中应用 grep,如下所示

netstat -ap | grep :7070

控制台输出

tcp 0 0 :::7070 :::* LISTEN 3332/java

根据PID(进程标识号)杀死服务

kill -9 3332
于 2019-08-06T02:55:04.363 回答
14
  1. lsof -i tcp:8000 该命令列出运行在 8000 端口的进程信息

  2. kill -9 [PID] 该命令杀死进程

于 2015-12-16T09:26:32.407 回答
13

Linux:如果您知道端口,则可以使用此命令:

netstat -plten | grep LISTEN | grep 8080

艾克斯

netstat -Aan | grep LISTEN | grep 8080

然后取第一列(例如:f100050000b05bb8)并运行以下命令:

rmsock f100050000b05bb8 tcpcb

杀死进程。

于 2014-08-12T07:14:14.873 回答
13

Linux:首先,如果您知道端口,则可以找到此命令的 PID:

netstat -tulpn 

例子:-

 Local Address  Foreign Address  State    PID/Program name

  :::3000       :::*             LISTEN    15986/node 

然后,您执行 kill 过程。运行以下命令:

杀死 -9 PID

示例:-

杀死-9 15986

于 2018-03-07T13:12:03.843 回答
13

运行以下命令查找 8080 端口号 PID:

须藤 lsof -t -i:8080

您现在可以使用以下命令轻松杀死您的 PID:

须藤杀 -9

您可以使用以下命令使用一个命令来终止特定端口上的进程:

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

于 2020-06-17T07:12:30.830 回答
12

您可以知道系统中运行的所有端口的列表及其详细信息(pid、地址等):

netstat -tulpn

您可以通过在以下命令中提供端口号来了解特定端口号的详细信息:

sudo netstat -lutnp | grep -w '{port_number}'

例如:sudo netstat -lutnp | grep -w '8080' 详细信息将像这样提供:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

如果你想使用 pid 杀死一个进程,那么kill -9 {PID}

如果您想使用端口号终止进程fuser -n tcp {port_number}

sudo如果您无法访问任何内容,请使用。

于 2019-03-14T09:50:24.627 回答
10

这将杀死在端口 80 上运行的程序

sudo fuser -k 80/tcp
于 2021-06-17T12:11:23.783 回答
6

kill -9 `fuser 8080/tcp|xargs -n 1`,此命令还会杀死使用 TCP 连接侦听端口 8080 的进程

于 2017-05-22T05:59:54.003 回答
6

只需运行此命令。不要忘记portnumber用您的端口替换 , ;)

  kill -9 $(sudo lsof -t -i:portnumber)
于 2020-06-13T22:02:12.943 回答
4
sudo apt-get install psmisc (or sudo yum install psmisc)
sudo fuser 80/tcp

结果:80/tcp:1858 1867 1868 1869 1871

一一杀死进程

杀死 -9 1858

于 2018-06-04T15:44:00.490 回答
4

这是 Windows 的解决方案:

C:\Users\Niroshan>netstat -ano|findstr "PID :8080"

Proto Local Address Foreign Address State PID
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18264

taskkill /pid 18264 /f
于 2020-07-14T16:08:19.873 回答
3

我正在开发一个 Yocto Linux 系统,它有一组有限的可用 Linux 工具。我想终止使用特定端口(1883)的进程。

首先,要查看我们正在监听的端口,我使用了以下命令:

root@root:~# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 0.0.0.0:hostmon         0.0.0.0:*               LISTEN      
tcp        0      0 localhost.localdomain:domain 0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:9080            0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      
tcp        0      0 :::hostmon              :::*                    LISTEN      
tcp        0      0 localhost:domain        :::*                    LISTEN      
tcp        0      0 :::ssh                  :::*                    LISTEN      
tcp        0      0 :::1883                 :::*                    LISTEN      

接下来,我通过以下方式找到了使用端口 1883 的进程的名称:

root@root:~# fuser 1883/tcp
290 
root@root:~# ps | grep 290
  290 mosquitt 25508 S    /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
12141 root      8444 S    grep 290

正如我们在上面看到的,它是/usr/sbin/mosquitto使用端口 1883 的程序。

最后,我杀死了这个过程:

root@root:~# systemctl stop mosquitto

我使用systemctl它是因为在这种情况下它是一个 systemd 服务。

于 2020-05-05T04:43:57.040 回答
3
  1. 首先检查过程netstat -lt
  2. 检查进程IDfuser <port number>/tcp
  3. 杀死端口上运行的进程kill <process id>
于 2020-05-24T10:52:41.927 回答
2

Git Bash 的其他方式:

stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}
于 2019-02-09T18:38:48.990 回答
2

在我的情况下,cent os 在建议的答案中有一些问题。所以我使用了以下解决方案:

  ss -tanp | grep 65432 | head -1 | grep -Po "(?<=pid=).*(?=,)" | xargs kill
于 2020-02-10T06:38:15.363 回答
1

以@ veer7所说的内容为基础:

如果您想知道端口上有什么,请在杀死它之前执行此操作。

$ sudo netstat -plten |grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/java      
tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/java      
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/java      
$ ps 25296
  PID TTY      STAT   TIME COMMAND
25296 ?        Sl     0:16 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dcatalina.base=/hom

使用 'ps' 和 netstat 报告的进程号

于 2017-10-12T02:15:15.740 回答
0

如果端口上的服务没有响应,如何杀死进程

timeout 1 telnet localhost 8080 2>&1 | if grep -q 'Unable'; then sudo kill -9 $(sudo lsof -t -i:8080); fi

它能做什么

  1. 用一秒钟开始“超时”,使 telnet 退出
  2. ' 2>&1 | ' 管道错误消息而不退出
  3. 如果错误消息包含“无法”,则运行 kode 以终止进程锁定端口 8080

这可以放在文件中并从“sudo crontab”定期运行

于 2020-08-31T11:14:25.923 回答
-2

在 Windows 中,它将是netstat -ano | grep "8080"并且我们收到以下消息TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076

我们可以使用杀死PID taskkill /F /PID 10076

于 2016-09-28T05:36:34.177 回答