Linux查看自己端口的实用方法详解

LEAF
在Linux系统中,查看端口状态是常用操作,主要可通过netstat、ss和lsof命令实现,netstat -tulpn可查看TCP/UDP端口监听状态及进程ID,适合传统环境;ss -tulpn作为netstat的升级版,查询速度更快,功能更全面;lsof -i:端口号则能精准定位指定端口对应的进程,若需查看已连接端口,可搭配-a参数显示所有连接,或结合grep过滤特定端口,注意部分命令需root权限执行,确保操作符合系统安全规范,这些方法能快速定位端口占用情况,便于排查网络服务问题。

在Linux系统中,端口号是网络通信的重要标识,无论是排查服务异常、解决端口冲突,还是确认应用监听状态,都需要掌握查看端口的方法,本文将详细介绍如何在Linux系统中查看“自己的端口号”——即当前用户进程占用的端口,或系统上所有端口的使用情况,帮助大家快速定位问题。

什么是“自己的端口号”?

自己的端口号”指两类情况:

  1. 当前用户启动的进程占用的端口:比如自己运行的服务、脚本或应用所监听的端口;
  2. 系统上所有端口的使用情况:包括其他用户进程占用的端口,需结合权限和进程信息判断是否与“自己”相关。

下文将覆盖这两类场景,提供多种实用命令。

Linux查看自己端口的实用方法详解

常用命令及方法

方法1:使用netstat命令(传统工具,兼容性好)

netstat是Linux系统查看网络连接、端口状态的经典工具,虽然部分新系统已默认不安装,但仍可通过sudo apt install net-tools(Ubuntu/Debian)或sudo yum install net-tools(CentOS/RHEL)安装。

核心参数说明:

  • -t:显示TCP端口;
  • -u:显示UDP端口;
  • -l:仅显示监听(LISTEN)状态的端口;
  • -n:以数字形式显示地址和端口(不解析域名,提高速度);
  • -p:显示占用端口的进程ID(PID)和名称(需root权限)。

实用示例:

(1)查看当前用户的所有监听端口
netstat -tuln

输出示例:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                         
  • Local Address列即为本地监听的地址和端口(如330622);
  • StateLISTEN表示端口处于监听状态,等待连接。
(2)查看当前用户进程占用的所有端口(含监听和已连接)
netstat -anp | grep $(whoami)
  • $(whoami)获取当前用户名,grep过滤出属于该用户的进程;
  • -a显示所有连接状态(包括监听、已连接、TIME_WAIT等)。
(3)查看特定端口是否被占用(如8080端口)
netstat -tuln | grep 8080

若输出包含8080端口,则表示已被占用。

方法2:使用ss命令(推荐,高效替代netstat

ssiproute2工具包的一部分,默认安装在大多数现代Linux系统中(如Ubuntu 18.04+、CentOS 7+),相比netstatss在查询大量连接时速度更快,功能也更全面。

核心参数说明:

  • -t:TCP端口;-u:UDP端口;
  • -l:仅监听端口;-n:数字形式;
  • -p:显示进程信息(需root权限);
  • -4:仅IPv4;-6:仅IPv6。

实用示例:

(1)查看所有监听端口(推荐常用)
ss -tuln

输出与netstat -tuln类似,但格式更简洁,速度更快。

(2)查看当前用户进程占用的端口
ss -tupn | grep $(whoami)
  • -t/-u分别指定TCP/UDP,-p显示进程,$(whoami)过滤当前用户。
(3)查看端口对应的进程(需root权限)
sudo ss -tulnp | grep 8080

输出示例:

tcp    LISTEN 0      511          0.0.0.0:8080      0.0.0.0:*    users:(("nginx",pid=1234,fd=6))
  • users:后括号内为进程名称(如nginx)和PID(如1234),明确占用端口的进程。

方法3:使用lsof命令(精确查找端口与文件的关联)

lsof(list open files)用于列出系统打开的文件,在Linux中,一切皆文件,网络端口也被视为“文件”,因此可通过lsof精准定位端口对应的进程。

核心参数说明:

  • -i:指定网络地址(如-i :8080表示查看8080端口);
  • -P:不解析端口号为服务名(如8080不显示为http-alt);
  • -n:不解析IP地址为域名;
  • -u:指定用户(如-u $(whoami))。

实用示例:

(1)查看当前用户的所有网络端口
lsof -i -u $(whoami)

输出示例:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx    1234   root    6u  IPv4   12345      0t0  TCP *:8080 (LISTEN)  
node     5678   myuser  3u  IPv6   12346      0t0  TCP [::]:3000 (LISTEN)  
  • COMMAND为进程名,PID为进程ID,NAME为监听的地址和端口。
(2)查看特定端口(如8080)的占用情况
lsof -i :8080

若端口未被占用,则无输出;否则会显示占用该端口的进程信息。

(3)查看当前用户的所有监听端口
lsof -i -u $(whoami) | grep LISTEN

通过grep LISTEN过滤出仅监听状态的端口。

方法4:结合psgrep(通过进程反查端口)

如果已知进程名或PID,可通过ps查看进程信息,再结合netstatss反查其占用的端口。

示例:

(1)查看当前用户的所有进程
ps -ef | grep $(whoami)

输出示例:

myuser   1234  1000  0 10:30 pts/0    00:00:10 nginx: master process  
myuser   5678  1234  0 10:31 pts/0    00:00:05 nginx: worker process  
(2)查看特定进程(如PID=1234)占用的端口
ss -tupn | grep 1234

netstat -tupn | grep 1234

输出将显示该进程的所有网络连接及端口。

进阶技巧:端口状态解析

查看端口时,State(状态)字段是关键,常见状态及含义如下:

  • LISTEN:端口处于监听状态,等待客户端连接(如Web服务、数据库);
  • ESTABLISHED:端口已建立连接,正在通信(如浏览器访问网站后的状态);
  • TIME_WAIT:连接已关闭,但等待足够时间确保对方收到断开请求(常见于高频短连接);
  • CLOSED:端口未使用。

常见问题与解决方案

提示“Permission denied”怎么办?

查看其他用户进程的端口或-p参数显示进程信息时,需要root权限:

sudo ss -tulnp

sudo lsof -i :8080

如何快速确认端口是否被占用?

结合ssgrep,直接过滤目标端口:

ss -tuln | grep -w 8080
  • -w确保精确匹配(避免匹配8080端口外的80801等)。

如何查看所有端口的使用情况(包括其他用户)?

sudo ss -tulnp  # 显示所有监听端口及进程

sudo netstat -anp  # 显示所有连接及进程
命令 优点 适用场景
ss 高效、功能全面,现代系统默认 日常查看端口、快速定位进程
netstat 兼容性好,老旧系统常用 传统系统或需要兼容性的场景
lsof 精确查找端口与文件的关联 通过端口反查进程、或通过进程查端口
ps + grep 通过进程信息反查端口 已知进程名/PID时快速定位

日常使用中,推荐优先使用ss命令,结合-tulnpgrep即可高效完成“查看自己端口”的需求,若需更精细的端口-进程关联分析,lsof是不二之选,掌握这些命令,能让你在Linux端口管理中游刃有余!

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码