Linux 查看端口占用情况

本文介绍了在Linux系统中使用netstat、lsof和ss命令查看端口占用情况的方法,包括netstat的常用参数、lsof的网络连接端口查看以及ss命令的监听端口列表。还提及了如何通过kill命令终止占用特定端口的进程。

Linux 查看端口占用情况

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

1、netstat

netstat 命令安装
yum install net-tools -y

netstat 常用参数说明
-a 显示所有连接的Socket
-n 不进行DNS解析,禁止将端口号转换成别名显示,能显示数字的全部转化为数字
-p 显示监听端口对应的程序,显示建立相关连接的程序名和程序PID
-t (tcp)显示tcp连接
-u (udp)显示udp连接
-l 显示在Listen(监听)服务状态的连接

1.netstat -anp | grep LISTEN
上述命令显示当前所有正在监听的端口及其使用情况,使用 grep 过滤出 LISTEN 的端口。

2.netstat -tunlp | grep 端口号
例如查看 8000 端口的情况,使用以下命令:
#netstat -tunlp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 26993/nodejs

更多命令:
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp | grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况

kill
在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:
kill -9 PID
如上实例,我们看到 8000 端口对应的 PID 为 26993,使用以下命令杀死进程:
kill -9 26993

2、lsof

lsof(list open files)是一个列出当前系统打开文件的工具。

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

1.lsof -i -P -n | grep LISTEN
-i :表示网络的连接端口号或者socket文件。
-P :此选项用于防止lsof对于长时间运行的程序,网络端口和文件进行状态间隔,因为这样会降低系统效能。
-n :表示不使用协议转换,数字地址直接表示,不进行DNS解析。
上述命令也会列出所有正在监听的端口及其使用情况,使用 grep 过滤出 LISTEN 的端口。

2.lsof -i:端口号
实例
查看服务器 8000 端口的占用情况:
#lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nodejs 26993 root 10u IPv4 37999514 0t0 TCP *:8000 (LISTEN)
可以看到 8000 端口已经被轻 nodejs 服务占用。

lsof -i 需要 root 用户的权限来执行,如下图:
在这里插入图片描述
每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。
lsof输出各列信息的意义如下:
COMMAND:进程的名称 PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

更多 lsof 的命令如下:

lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

3、ss

1.ss -ltnp
-l :表示仅列出监听端口。
-t :表示仅列出TCP协议端口。
-n :表示不进行DNS解析。
-p :显示进程名称/ID
上述命令显示监听的TCP端口和与之相关的进程信息。

注意:执行这些命令需要root权限。

4、可通过 kill 命令强行杀掉占用端口的进程

kill -9 进程PID

示例:
kill -9 123 #123 是进程 PID,此命令可杀掉 PID 为 123 的端口进程

Linux 系统中,可以通过多种命令来查看端口的使用情况占用情况。以下是一些常用的命令及其用途: ### 查看所有端口占用情况 - **`netstat -tulnp`** 该命令可以列出所有正在监听的 TCP 和 UDP 端口,并显示与这些端口关联的程序信息。其中: - `-t` 表示显示 TCP 连接。 - `-u` 表示显示 UDP 连接。 - `-l` 表示只显示处于监听状态的连接。 - `-n` 表示以数字形式显示地址和端口号(不进行 DNS 解析)。 - `-p` 表示显示与端口相关的进程信息(需要 root 权限才能看到其他用户的进程)。 - **`netstat -AaLlnW`** 这个命令也可以用来检查所有端口占用情况,它提供了更为详细的网络连接信息[^1]。 ### 查看特定端口占用情况 如果需要查看某个特定端口的使用情况,可以结合 `grep` 命令来过滤输出结果: - **`netstat -tulnp | grep <端口号>`** 例如,要查看 80 端口的使用情况,可以执行: ```bash netstat -tulnp | grep 80 ``` 这将显示所有使用 80 端口的连接及其相关信息[^3]。 - **`netstat -ntulp | grep [端口号]`** 比如,要查看 5000 端口的使用情况,可以运行: ```bash netstat -ntulp | grep 5000 ``` 其中: - `-n` 表示不解析服务名称。 - `-t` 表示 TCP 协议。 - `-u` 表示 UDP 协议。 - `-l` 表示监听状态的连接。 - `-p` 表示显示进程 ID 和名称。 ### 查看端口连接的客户端 IP 地址 - **`netstat -anp`** 此命令可以查看端口的连接情况,包括客户端的 IP 地址。 - **`netstat -anp | grep <端口号>`** 如果只想查看特定端口的连接情况,比如 5000 端口,可以执行: ```bash netstat -anp | grep 5000 ``` ### 示例代码块 ```bash # 安装 net-tools 包(如果尚未安装) sudo yum -y install net-tools # 查看所有端口占用情况 netstat -tulnp # 查看 80 端口的使用情况 netstat -tulnp | grep 80 # 查看 5000 端口的使用情况 netstat -ntulp | grep 5000 # 查看 5000 端口的连接客户端 IP netstat -anp | grep 5000 ``` 通过上述命令,可以有效地管理和监控 Linux 系统中的端口使用情况,帮助诊断网络问题或优化系统性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值