要查看某个端口在 Linux 上是否已经开启并且有服务正在使用该端口,你可以执行多种命令或方法。以下是几个常见的方法:

方法 1:netstat

使用 `netstat` 可以列出当前系统的所有网络端口及其连接状态。

sh

sudo netstat plant | grep 端口号

`p` 显示与端口关联的进程ID及程序名称。

`l` 只显示监听状态的socket(listening sockets)。

linux查看端口是否开启  第1张

`a` 显示所有活动的以及没有在活动中的socket连接。

`n` 显示具体的IP地址和端口号而不是主机名称。

比如要查看80端口:

sh

linux查看端口是否开启  第2张

sudo netstat plant | grep :80

方法 2:ss

`ss` 命令功能更全面,可以替换 `netstat` 作为更现代的选择。查看端口的命令是:

linux查看端口是否开启  第3张

sh

sudo ss plant | grep :端口号

或者简化为:

sh

sudo ss tuln | grep 端口号

其中 `t` 表示TCP;`u` 表示UDP;`l` 表示listen(监听状态);`n` 表示显示数字形式的地址。

linux查看端口是否开启  第4张

比如对于 443 端口:

sh

sudo ss tan | grep 443

linux查看端口是否开启  第5张

方法 3:lsof

`lsof` 可用于查找已打开的文件,其中包括端口和对应的PID(进程 ID)。如果端口未被进程所使用,则没有输出。要找到使用特定端口的进程,可以使用:

sh

linux查看端口是否开启  第6张

sudo lsof iTCP sTCP:LISTEN p 端口号

如:

对80端口:

sudo lsof iTCP sTCP:LISTEN P n | grep 80

linux查看端口是否开启  第7张

注意这里需要替换端口号。

方法 4:检查网络配置工具或防火墙规则

如果只是检查该端口有没有在使用,并没有实际打开,你可以尝试:

1. 使用 `firewallcmd` 如果您使用 firewalld 管理防火墙:

sh

sudo firewallcmd listports

查看开放的端口。

linux查看端口是否开启  第2张

2. 如果你没有用 firewalld, 或者你想确保所有开放的 TCP 端口,你可以使用 `ss`, `iptables L`, 或 `ip c link` 等来确定端口的情况,但它们不是直接用来列出开放端口列表。

最后说明:

以上命令均需root权限或具有适当权限以确保能够查看到监听的网络套接字和其他信息。如果遇到“Permission denied”错误提示,尝试用 `sudo` 运行该命令或以root用户运行。

linux查看端口是否开启  第9张

请根据你具体使用的Linux发行版以及具体情况选择相应的方法!