当前位置:首页>Linux>Linux基础 | lsof 命令使用指南

Linux基础 | lsof 命令使用指南

  • 2026-09-22 11:15:36
Linux基础 | lsof 命令使用指南

在 Linux 系统里,有一句话非常经典:一切皆文件。

进程、端口、网络连接、设备……本质上都可以看作文件。

而有一个命令,专门用来回答一个问题:“这个文件是谁在用?”

它就是——lsof。

今天这篇文章,我们从实际使用场景出发,系统讲清 lsof 的用法和价值。

一、lsof 是干什么的?

lsof 全称:List Open Files(列出打开的文件)
它可以查看:

哪个进程打开了某个文件

哪个进程占用了某个端口

某个用户正在运行什么文件

一句话总结:lsof 是“资源占用排查神器”。

二、安装与验证

部分系统默认未安装,通过如下命令安装。
apt install lsof -y  # Ubuntu / Debianyum install lsof -y  # CentOS / Redhat
验证:
lsof -v
能看到版本信息即可。

三、最常用场景一:查端口被谁占用(高频)

1️⃣ 查 80 端口被谁占用
lsof -i:80
示例输出:
nginx  1234  root  6u  IPv4  12345  TCP *:80 (LISTEN)

含义:

nginx 进程
PID 1234
正在监听 80 端口
这在以下场景非常实用:
端口冲突
服务无法启动
Docker 端口被占
2️⃣ 查所有网络连接
lsof -i
可查看当前所有网络相关文件。

四、最常用场景二:查文件被谁占用

1️⃣ 删除文件失败怎么办?
报错:Device or resource busy
排查:
lsof filename.txt
就能看到哪个进程正在使用该文件。
2️⃣ 查某个目录下被占用文件
lsof +D /var/log
适合排查日志目录无法卸载的问题。

五、最常用场景三:查某个进程打开了什么

已知 PID:
lsof -p 1234
可以看到该进程:

打开的文件

使用的端口

访问的设备

在分析程序异常时非常有帮助。

六、按用户查看资源占用

lsof -u nginx
查看 nginx 用户打开的所有文件。
适用于:

审计

资源使用分析

七、一个真实排障案例

场景:MySQL 无法启动,提示端口已占用
排查步骤:
lsof -i:3306
发现已有 mysqld 进程在运行。
这一步可以直接定位问题,而不需要猜测。

八、lsof 与 netstat / ss 的区别

命令
关注点
netstat / ss
网络连接
lsof
文件 + 端口 + 进程
简单理解:ss 看“连接状态”,lsof 看“谁在用”。
在端口排查中,两者经常配合使用。

九、新手常见误区

❌ 只会用 netstat 不会用 lsof
❌ 忽略文件占用问题
❌ 不理解 Linux 的“文件抽象模型”
真正理解 lsof 的前提是:在 Linux 中,端口也是文件。

十、总结

关于 lsof 命令,你至少要掌握:

lsof -i:端口 查端口占用

lsof 文件名  查文件占用

lsof -p PID 查进程资源

lsof -u 用户名 查用户占用

在Linux基础命令体系中,lsof是:定位资源冲突与异常占用的核心工具。
如果你经常做运维或服务部署, lsof一定会成为你排障时的“第一反应命令”。
如果这篇文章对你有帮助,欢迎点赞、收藏、转发,我们下篇继续聊 Linux 基础。

最新文章

随机文章