Linux下如何根据端口号杀死进程Linux下如何根据端口号杀死进程Linux下如何根据端口号杀死进程Linux下如何根据端口号杀死进程
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Linux下如何根据端口号杀死进程

在任何给定时刻,您的 Linux 系统都同时运行多个进程。其中一些进程如果用于上传或下载数据,则可以访问您的网络。这些进程通常将自己绑定到特定的端口号,这可以让我们根据端口号杀死进程。

Kill 命令是系统管理员停止进程运行的一种方法。但是,kill 命令仅接受进程 ID 作为参数。 pkill 和 killall 命令是另外两个选项,但它们接受进程名称作为参数。

为了根据端口号终止进程,我们需要使用“fuser”命令,或将其他命令行工具与常用的“kill”命令结合使用。在本教程中,我们将向您展示在 Linux 中根据端口号终止进程的多种方法。

在本教程中您将学习:

  • 如何使用 fuser 终止 TCP 或 UDP 端口上的进程

  • 如何使用 kill 终止 SCTP 端口上的进程

  • 如何使用 ss 和 lsof 查看端口正在使用的进程

  • 如何使用 socat 将进程绑定到端口以进行测试

如何查看哪个进程正在使用某个端口

如前所述,侦听传入连接的进程会将自身绑定到端口。大多数进程将始终使用相同的端口,除非它们已配置为使用非默认端口。例如,SSH 使用端口 22,HTTP 使用端口 80,MySQL 使用端口 3306 等。有了这些知识,我们就能够弄清楚某个服务正在哪个端口上运行。

lsof命令

要查看系统上正在使用的端口列表,lsof 命令会派上用场。例如,以下命令将列出有关哪些进程正在使用 TCP 端口 80 的信息。


$ sudo lsof -i TCP:80

与其他信息一起,lsof 命令为我们提供了使用指定端口的进程的进程 ID。它还可以在 UDP 端口上工作。要了解有关如何使用 lsof 的更多信息,请查看我们的 lsof Linux 命令指南及其示例教程。

SS命令

另一个可用于查看哪些进程正在使用特定端口的命令是 ss 命令。有些用户可能更喜欢它而不是 lsof,但就我个人而言,我们发现 lsof 在这种情况下更容易使用。但是,ss 能够列出使用其他协议(例如 SCTP 端口)的进程。


$ ss -Slp

上述命令的输出将显示 SCTP 使用的所有进程和端口。要了解有关如何使用 ss 的更多信息,请查看我们的在 Linux 上使用 ss 命令的教程。

使用这两个工具将帮助我们确定哪个进程 ID 正在某个端口上运行,并且还可以方便地将这些进程 ID 传递给以下一些示例中的 kill 命令。

使用 socat 将进程绑定到端口

为了使测试以下命令更容易,我们可以使用 socat 命令创建一个虚拟进程,将其自身绑定到我们选择的端口。

  1. 将进程绑定到 TCP 端口 8080:

    
    $ socat tcp-listen:8080,bind=127.0.0.1 stdout &
    
  2. 将进程绑定到 UDP 端口 8080:

    
    $ socat udp-listen:8080,bind=127.0.0.1 stdout &
    
  3. 将进程绑定到 SCTP 端口 8080:

    
    $ socat sctp-listen:8080,bind=127.0.0.1 stdout &
    

这些示例会将您的流程置于后台。然后,我们可以使用下面的命令来测试终止进程。

根据端口号杀死进程示例

  1. 对于侦听 TCP 或 UDP 端口的进程,fuser 命令和 -k(终止)选项将为您终止相关进程。只需在命令中指定端口类型(TCP 或 UDP)和端口号即可。例如,这将终止使用 TCP 端口 80 的进程。

    
    $ fuser -k 8080/tcp
    
  2. 或者使用 fuser 终止 UDP 端口 8080 上的进程:

    
    $ fuser -k 8080/udp
    

    请记住随后使用 lsof 命令来确认没有进程正在使用该端口。

  3. 如果您不想使用fuser,可以通过lsof命令查找正在使用端口号的进程ID,然后将该数据传递给 >kill 命令。例如,这将终止使用 TCP 端口 8080 的所有进程。

    
    $ lsof -i tcp:8080 | awk '/8080/{print $2}' | xargs kill
    
  4. 要使用不同协议(例如 SCTP)终止进程,我们可以使用 ss 命令并将 PID 通过管道传递给 xargs 和 Kill 命令。例如,以下命令将终止使用 SCTP 端口 8080 的所有进程。

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

结束语

在本教程中,我们了解了如何根据 Linux 系统上使用的端口号来终止进程。 fusionr 命令是我们用于这项工作的主要工具,但 Linux 因向用户提供不止一种方法来完成任务而闻名。作为替代方案,lsof 和 ss 命令可以帮助我们确定所需的信息,并且与 kill 命令结合使用可以产生与定影器。

©2015-2025 艾丽卡 support@alaica.com