Linux 查看端口占用情况


Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。

lsof

lsof(list open files)是一个列出当前系统打开文件的工具。在 Linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。

lsof 查看端口占用语法格式:lsof -i:端口号

  • -a 列出打开文件存在的进程
  • -c<进程名> 列出指定进程所打开的文件
  • -g 列出GID号进程详情
  • -d<文件号> 列出占用该文件号的进程
  • +d<目录> 列出目录下被打开的文件
  • +D<目录> 递归列出目录下被打开的文件
  • -n<目录> 列出使用NFS的文件
  • -i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
  • -p<进程号> 列出指定进程号所打开的文件
  • -u 列出UID号进程详情
  • -h 显示帮助信息
  • -v 显示版本信息
1
2
3
[root@iZwz9e2l6djkn7vw4xvic9Z ~]# lsof -i:8888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 2305 root 31u IPv4 70962891 0t0 TCP *:ddi-tcp-1 (LISTEN)

netstat

netstat 是一个基于命令行界面的网络实用工具,可显示当前的网络状态,包括传输控制协议层的连线状况、路由表、网络接口状态和网络协议的统计信息等。netstat 命令适用于类 Unix 系统、IBM OS/2 和 Windows NT 操作系统家族。 netstat 可用于查找网络中的问题,并可通过计算网络流量来度量网络性能。

netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。

netstat 查看端口占用语法格式:netstat -tunlp | grep 端口号

  • -t (tcp) 显示 tcp 相关选项
  • -u (udp) 显示 udp 相关选项
  • -n 拒绝显示别名,能显示数字的全部转化为数字
  • -l 仅列出在 Listen(监听)的服务状态
  • -p 显示建立相关链接的程序名
1
2
3
4
5
6
7
8
9
10
[root@iZwz9e2l6djkn7vw4xvic9Z ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1026/sshd
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 2305/java
tcp6 0 0 :::2375 :::* LISTEN 12854/dockerd
tcp6 0 0 :::3306 :::* LISTEN 26539/docker-proxy
udp 0 0 0.0.0.0:68 0.0.0.0:* 511/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 536/chronyd
udp6 0 0 ::1:323 :::* 536/chronyd