如何在 Linux 中查看正在使用的端口

前言

在对网络连接或特定于应用程序的问题进行故障排除时,首先要检查的是应该在系统上实际使用哪些端口以及哪个应用程序正在侦听特定端口。本文会介绍如何使用 netstat , ss 和 lsof 命令找出哪些服务上使用哪些端口。这些说明适用于所有类Unix 的操作系统,比如 macOS上也能使用 。

正在侦听的端口

网络端口由他的编号,关联的 IP 地址以及 TCP 或 UDP 等通信协议的类型来标识。侦听端口是应用程序或进程侦听的网络端口,充当通信端点。可以使用防火墙打开或关闭(过滤)每个侦听端口。一般而言,开放端口是一个接收来自远程位置的传入数据包的网络端口。您不能在同一个 IP 地址上有两个不同的服务侦听同一端口。例如,如果你运行的 Nginx 服务器正在监听 80 和 443 端口,您尝试启动绑定 Caddy 80或443,因为 HTTP 和 HTTPS 端口已在使用(当然,域名单独绑定不存在这个问题)。

使用 netstat 检查端口

netstat  是一个命令行工具,可以提供有关网络连接的信息。

要列出正在侦听的所有 TCP 或 UDP 端口,包括使用端口和套接字状态的服务,请使用以下命令:

1、sudo netstat -tunlp

此命令中使用的选项具有以下含义:

-t - 显示 TCP 端口。
-u - 显示 UDP 端口。
-n - 显示数字地址而不是主机名。
-l - 仅显示侦听端口。
-p - 显示进程的 PID 和名称。仅当您以 root 或 sudo 用户身份运行命令时,才会显示此信息。

如果要过滤结果,请使用 grep 命令。例如,要查找在 TCP 端口 80 上侦听的进程,请键入:

1、sudo netstat -tnlp | grep :80

当然,请习惯使用管道符号。如果输出为空,则表示没有任何内容正在侦听端口。

使用 ss 检查端口

ss 是新的 netstat 。它缺少一些 netstat 功能,但暴露了更多的 TCP 状态,而且速度稍快。命令选项大致相同,因此从 netstat 转换为 ss 并不困难。

要使用 ss 获取所有侦听端口的列表,请键入:

1、sudo ss -tunlp

输出几乎与 netstat 报告的输出相同,但是能看到用户和具体应用的情况。

使用 lsof 检查端口

lsof  是一个功能强大的命令行实用程序,它提供有关进程打开的文件的信息。在 Linux 中,一切都是文件。您可以将套接字视为写入网络的文件。

要使用 lsof 获取所有侦听 TCP 端口的列表,请键入:

1、sudo lsof -nP -iTCP -sTCP:LISTEN

部分系统可能没法正常得到 IPv6结果最直观就能看到命令。

要查找正在侦听特定端口(例如 3306)的进程,请使用以下命令:

1、sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

输出显示 MySQL 服务器使用该 3306 端口。

总结

当然,这只是常规平时开发和运维中用到的一些方式,在端口使用上,应该还是需要统一和细致的管理,避免遇到冲突问题。

文章链接: https://www.mfisp.com/26008.html

文章标题:如何在 Linux 中查看正在使用的端口

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
运维技术

安全运维之文件系统保护

2023-12-14 10:59:51

运维技术

在 Linux 中更改 SSH 端口

2023-12-14 15:48:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠