如何杀死特定端口上运行的进程?


概述

在使用 Linux 时,通常需要停止某个进程使用特定的 TCP/IP 协议。例如,您可能正在运行一个监听 HTTP 请求的应用程序,并且不希望它监听端口 80(标准 HTTP 端口)。您可以使用 netstat 命令查看当前哪些进程正在使用端口 -

$ netstat -lntp | grep :80
tcp6 0 0 :::80 :::* LISTEN 8072/httpd
tcp4 0 0 ::ffff:127.0.0.1:80 :::::80 8069/httpd
tcp6 0 127.0.0.5:53 :::* LISTEN 903/named
udp6 0 0 :::22 :::* LISTEN 4963/sshd

我们将探讨如何识别使用其端口的进程以及如何终止它们。我们还将了解如何杀死所有监听特定端口的进程。

使用端口识别进程

netstat 命令可以帮助我们识别哪些进程正在监听给定端口。-n 标记告诉 netstat 不要打印有关连接的任何信息。如果我们只想了解是否有任何进程在监听,这将非常有用。

准备示例

在开始测试识别和杀死在端口上运行的进程的一些策略之前,让我们使用 socat 准备一些进程 -

$ socat sctp-listen:9999,bind=127.0.0.1 stdout &
[1] 6424

$ socat tcp-listen:9999,bind=127.0.0.1 stdout &
[2] 6431

$ socat udp-listen:9999,bind=127.0.0.1 stdout &
[3] 6438

在这里,我们使用端口 9999 和协议 SCTP、TCP 和 UDP 分别创建了三个进程。

使用fuser命令

fuser命令是终止进程的一个很好的工具。我们只需要使用 -k 参数。

让我们使用 TCP 协议杀死进程 -

$ fuser -k 9999/tcp
9999/tcp: 6431

这里,9000/udp 表示法是 -u udp 9000 的简写。

当查询使用除 tcp 或 udp 以外的协议的进程时,我们无法使用 fusertop。

使用kill命令

我们需要使用“kill”(终止)函数来终止进程。但是,在这样做之前,我们必须首先通过指定其端口和协议来识别进程的 PID。

当我们谈论“kill”命令时,通常指的是程序 /bin/kill。但是,无论我们指的是程序 /usr/bin/kill 还是 shell 内置的 kill,它们都可以向正在运行的进程发送特定类型的信号。

lsof命令

您可以使用 lsof 命令查看进程打开的文件信息。

让我们使用 kill 与 lsof 结合,通过发送 UDP 数据包来终止进程。

$ lsof -i udp:9999 | awk '/9999/{print $2}' | xargs kill

在 lsof 部分,我们使用了 -i 参数来使用语法 [46][protocol][@hostname|hostaddr][:service|port] 过滤使用该端口的进程。在我们的例子中,我们使用了 protocol:port

我们使用了 awk 来搜索在特定 TCP/IP 地址(在本例中为 9999)上运行的进程,然后只打印出 PID。使用 xargs 和 kill 终止了这些进程。

ssnetstat命令

由于 sctp 和 netstat 使用 SCTP 协议列出进程,让我们结束最后一个进程 -

$ ss -Slp | grep -Po ':9999\s.*pid=\K\d+(?=,)' | xargs kill

要列出应用程序的监听端口,请使用带 -l 参数的 ss 实用程序。您还可以通过添加 -p 参数来指定哪些进程正在使用每个端口。最后,您可以通过指定 -S 参数来查看 SCTP(流控制传输协议)连接。

我们使用了 sed 删除了除字符串 pid=" 和逗号 "," 之间的数字以外的所有内容。

我们也可以通过运行 netcat 使用另一种方法 -

$ netstat -Slp | grep -Po ':9999\s.*LISTEN.*?\K\d+(?=/)' | xargs kill

我们搜索了字符串“LISTEN”和字符“/”之间的数字列表。

从这些示例中我们可以看到,netcat 和 netcat6 都支持除 TCP/IP 之外的其他协议,因此它们有助于我们拓宽对网络的视野。但是,由于 netcat 已弃用,我们应该优先使用 nc 命令。

结论

我们讨论了几种使用特定端口杀死进程的方法。

我们首先使用了 fuser 命令。我们使用其端口号和协议查找正在运行的程序的 PID,然后使用 kill 命令终止关联的程序。

更新于:2022-12-26

5K+ 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告